Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Много вопросов )

Статус пользователя Mr.Dmitry
сообщение 11.5.2012, 18:24
Сообщение #1


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

И так у меня появилось очень много вопросов по скриптингу

1. Как вернуть стандартную модель игроку? Например я меняю игроку модель таким способом

Код
cs_set_user_model(id, "predator")


А патом хочу вернуть игроку стандартную модель

Код
public plugin_init() {
register_logevent("round_end", 2, "1=Round_End")
}

public round_end(id) //Это у меня строка 108 на которую ругается сервер в консоли
{
cs_reset_user_model(id)
}



Это все только вырезки из существующего кода. Так вот, компилируется все без ошибок, но в конце раунда у меня так и остается модель predator хотя должна сменится на стандартную, в консоли

Код
[AMXX] Run time error 10: native error (native "cs_reset_user_mode")
[AMXX]      0 test.sma::round_end (line 108)



2. Как сделать больше жизней при помощи кваров? Сейчас у меня так

Код
new cvar_predator_health = register_cvar( "amx_predator_health", "1000" )


public test(id){
set_user_health( id, get_pcvar_num( cvar_predator_health))
}


Захожу в игру и вижу у себя 244 хп за место 1000. Ни где дополнительно кол-во я не меняю и не какие функции для изменения кол-во хп не используются.


3. Как сделать меню по таймеру? И как можно заблокировать некоторые из пунктов? Сейчас

меню
Код
public Createmenu(id){
    new menu = menu_create( "Меню:^n У вас осталось x секунд  до закрытия", "run_menu" );
    
    menu_additem( menu, "Меню1", "1", 0)
  menu_additem( menu, "Меню2", "2", 0)
    menu_additem( menu, "Меню3", "3", 0)
    menu_additem( menu, "Меню4", "4", 0)
    menu_additem( menu, "Меню5", "5", 0)
    
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu, 0 );
    return PLUGIN_HANDLED;
}

public run_menu(id, menu, item){
    if( item == MENU_EXIT ){
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
    
    new data[ 9 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    item_key = str_to_num( data );
    
    switch(item_key){
        case 1: client_cmd(id,"menu1");
        case 2: client_cmd(id,"menu2");
    case 3: client_cmd(id,"menu3");
    case 4: client_cmd(id,"smenu4");
    case 5: client_cmd(id,"menu5");
        
    }
    
    menu_destroy( menu );
    return PLUGIN_HANDLED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя AndrewZ
сообщение 11.5.2012, 18:32
Сообщение #2


Иконка группы

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

1.
Цитата
public plugin_init() {
register_logevent("round_end", 2, "1=Round_End")
}

public round_end(id) //Это у меня строка 108 на которую ругается сервер в консоли
{
cs_reset_user_model(id)
}


В этом случае нужно сделать цикл по игрокам, так как ивент глобальный, тут нет определенного id:
Код
new mxplrs

public plugin_init()
{
     register_logevent("round_end", 2, "1=Round_End")
     mxplrs = get_maxplayers()
}

public round_end() //Это у меня строка 108 на которую ругается сервер в консоли
{
     for( new i = 1; i <= mxplrs; i++ )
     {
          if( is_user_connected( i ) )
          {
                cs_reset_user_model(i)
          }
     }
}


2.
Цитата
Захожу в игру и вижу у себя 244 хп за место 1000. Ни где дополнительно кол-во я не меняю и не какие функции для изменения кол-во хп не используются.

hud жизней не может отобразить больше 250hp, но по факту они есть :)

3.
http://www.amx-x.ru/search.php?keywords=%D...%B8%D1%81%D0%BA


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rejiser
сообщение 11.5.2012, 18:34
Сообщение #3


Стаж: 15 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

1. Эта функция не передает идентификатор

Код
public round_end(id)

>>

Код
public round_end()

ну и соответственно нужен цикл по игрокам

2. В движке только 255 HP предусмотрено, хочешь чтобы выводило больше, показывай в худе, например как это сделано в zombie plague.


AndrewZ, не успел =|

Отредактировал: Rejiser, - 11.5.2012, 18:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
noskill
сообщение 11.5.2012, 18:40
Сообщение #4
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

Цитата(Mr.Dmitry @ 11.5.2012, 19:24) *
1. Как вернуть стандартную модель игроку? Например я меняю игроку модель таким способом

можно через query_client_cvar(id, model), но она вроде на старых патчах криво работает
или get_user_info(index,"model",MyString,8)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 12.5.2012, 11:58
Сообщение #5


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Что значит выводить в hud? То есть убирать стандартное отображение жизней и на его месте выводить hud сообщением новое кол-во жизней? )

И как быть с menu?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 12.5.2012, 12:10
Сообщение #6
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

Цитата(Mr.Dmitry @ 12.5.2012, 12:58) *
Что значит выводить в hud? То есть убирать стандартное отображение жизней и на его месте выводить hud сообщением новое кол-во жизней? )

стандартное думаю ты не уберешь(хотя можно, если повозиться), просто над ним худ сообщение "Health: 100500"

Цитата
И как быть с menu?


попробуй так, не уверен в правильности
Код
public Createmenu(id){
    new menu = menu_create( "Меню:^n У вас осталось x секунд  до закрытия", "run_menu" );
    
    menu_additem( menu, "Меню1", "1", 0)
    menu_additem( menu, "Меню2", "2", 0)
    menu_additem( menu, "Меню3", "3", 0)
    menu_additem( menu, "Меню4", "4", 0)
    menu_additem( menu, "Меню5", "5", 0)
    
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu, 0 );
    set_task(10.0, "destMENU")
    return PLUGIN_HANDLED;
}

public destMENU(menu)
{
    menu_destroy(menu)
}

public run_menu(id, menu, item){
    if( item == MENU_EXIT ){
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
    
    new data[ 9 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    item_key = str_to_num( data );
    
    switch(item_key){
        case 1: client_cmd(id,"menu1");
        case 2: client_cmd(id,"menu2");
    case 3: client_cmd(id,"menu3");
    case 4: client_cmd(id,"smenu4");
    case 5: client_cmd(id,"menu5");
        
    }
    
    menu_destroy( menu );
    return PLUGIN_HANDLED;
}


Отредактировал: csnetua, - 12.5.2012, 12:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 16.5.2012, 0:07
Сообщение #7


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(csnetua @ 12.5.2012, 16:10) *
стандартное думаю ты не уберешь(хотя можно, если повозиться), просто над ним худ сообщение "Health: 100500"



попробуй так, не уверен в правильности
Код
public Createmenu(id){
    new menu = menu_create( "Меню:^n У вас осталось x секунд  до закрытия", "run_menu" );
    
    menu_additem( menu, "Меню1", "1", 0)
    menu_additem( menu, "Меню2", "2", 0)
    menu_additem( menu, "Меню3", "3", 0)
    menu_additem( menu, "Меню4", "4", 0)
    menu_additem( menu, "Меню5", "5", 0)
    
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu, 0 );
    set_task(10.0, "destMENU")
    return PLUGIN_HANDLED;
}

public destMENU(menu)
{
    menu_destroy(menu)
}

public run_menu(id, menu, item){
    if( item == MENU_EXIT ){
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
    
    new data[ 9 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    item_key = str_to_num( data );
    
    switch(item_key){
        case 1: client_cmd(id,"menu1");
        case 2: client_cmd(id,"menu2");
    case 3: client_cmd(id,"menu3");
    case 4: client_cmd(id,"smenu4");
    case 5: client_cmd(id,"menu5");
        
    }
    
    menu_destroy( menu );
    return PLUGIN_HANDLED;
}

А как отобразить сколько осталось секунд до закрытия меню?

Код
new menu = menu_create( "Меню:^n У вас осталось 10 секунд  до закрытия", "run_menu" );
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 16.5.2012, 7:03
Сообщение #8
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

нашел в интернетах такой вариант
Код
new timer

public Createmenu(id){
    new menu = menu_create( "Меню:^n У вас осталось x секунд  до закрытия", "run_menu" );
    
    menu_additem( menu, "Меню1", "1", 0)
    menu_additem( menu, "Меню2", "2", 0)
    menu_additem( menu, "Меню3", "3", 0)
    menu_additem( menu, "Меню4", "4", 0)
    menu_additem( menu, "Меню5", "5", 0)
    
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu, 0 );
    timer = 26
    set_task(1.0, "timer_func", 0, _, _, "a", 26)
    return PLUGIN_HANDLED;
}

public destMENU(menu)
{
    menu_destroy(menu)
}

public run_menu(id, menu, item){
    if( item == MENU_EXIT ){
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
    
    new data[ 9 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    item_key = str_to_num( data );
    
    switch(item_key){
        case 1: client_cmd(id,"menu1");
        case 2: client_cmd(id,"menu2");
    case 3: client_cmd(id,"menu3");
    case 4: client_cmd(id,"smenu4");
    case 5: client_cmd(id,"menu5");
        
    }
    
    menu_destroy( menu );
    return PLUGIN_HANDLED;
}





public timer_func(id)
{
    timer--
    set_hudmessage(0, 255, 0, 0.57, 0.41, 0, 0.0, 1.0, 0.0, 0.0, -1)
    show_hudmessage(id, "Timer: %d to clouse menu", timer)
    
    if(timer == 0)
    {    
        menu_destroy(menu)
        show_menu(id, 0, "^n", 1)
        return PLUGIN_HANDLED    
    }
    
    return 0
}


new timer в глобал
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: