AMX MOD X
Среда, 23.09.2020, 20:39:38



Приветствую Вас Гость | RSS
[ Главная ] [ помогите перевести - Страница 3 - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » помогите перевести (функции)
помогите перевести
predatorДата: Вторник, 22.12.2009, 17:42:53 | Сообщение # 31
Лейтенант
Группа: Пользователи
Сообщений: 54
Репутация: 5
Статус: Не в сети
Code

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN  "Admin Revive"
#define VERSION  "0.01"
#define AUTHOR  "~Free*.*KILL~"

new pcv_amx_revive
new bool:g_player_revive[33]

public plugin_init()
{
   register_plugin( PLUGIN, VERSION, AUTHOR )
   RegisterHam( Ham_Spawn, "player", "event_player_spawn", 1 )
   register_clcmd( "say /revive", "revive_me", ADMIN_ALL, "" )
   pcv_amx_revive = register_cvar( "amx_revive", "1" )
}

public event_player_spawn( id ) if ( get_pcvar_num ( pcv_amx_revive ) && is_user_alive( id ) ) g_player_revive[id] = false

public revive_me( id, level, cid )
{
   if ( !get_pcvar_num ( pcv_amx_revive ) )
    return PLUGIN_CONTINUE

   if ( !cmd_access( id, level, cid, 0 ) )
    return PLUGIN_HANDLED

   if( is_user_alive( id ) )
   {
    client_print( id, print_chat, "* This command can only use a dead player." )
    return PLUGIN_HANDLED
   }

   if( g_player_revive[id] )
   {
    client_print( id, print_chat, "* You have already used this command in this round." )
    return PLUGIN_HANDLED
   }

   new name[32]
   get_user_name( id, name, charsmax( name ) )

   client_print( 0, print_chat, "Player ^"%s^" was revived. Be careful!", name )

   g_player_revive[id] = true
   ExecuteHamB(Ham_CS_RoundRespawn, id);

   return PLUGIN_HANDLED
}

Вам осталось только сделать 2 проверки: Выбрал ли игрок команду и скин (если нет - респавн не выполнять) и на то какой мод сейчас запущен (cstrike, czero и если ни один их них то осианавливаем работу плагина).

Сообщение отредактировал predator - Вторник, 22.12.2009, 18:55:26
 
a_aquaДата: Вторник, 22.12.2009, 18:37:32 | Сообщение # 32
Лейтенант
Группа: Пользователи
Сообщений: 64
Репутация: 3
Статус: Не в сети
Quote
/* Code regenerated by UFPS AMX(X) Designer */

Можно подробнее? о.0

Извините за оффтоп.

 
predatorДата: Вторник, 22.12.2009, 18:56:45 | Сообщение # 33
Лейтенант
Группа: Пользователи
Сообщений: 54
Репутация: 5
Статус: Не в сети
Quote (a_aqua)
Можно подробнее? о.0
Извините за оффтоп.

Спасибо, забыл убрать. Просто относится только к оформлению.
 
FreeKILLДата: Вторник, 22.12.2009, 21:24:24 | Сообщение # 34
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
predator, плагин нерабочий. поясняю: исходя из твоего плагина как токо человек стал живым ему дается значение false и он автоматом может делать ревайв. но огромное спс! ты мне многое разъяснил))!
 
PomanoBДата: Вторник, 22.12.2009, 22:03:21 | Сообщение # 35
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Надо заменить
Code
RegisterHam( Ham_Spawn, "player", "event_player_spawn", 1 )

на
Code
RegisterHam( Ham_CS_RoundRespawn, "player", "event_player_spawn", 1 )

И
Code
ExecuteHamB(Ham_CS_RoundRespawn, id);  на ExecuteHam(Ham_CS_RoundRespawn, id);

И
Code
if( is_user_alive( id ) )  
    {  
     client_print( id, print_chat, "* This command can only use a dead player." )  
     return PLUGIN_HANDLED  
    }

На
Code
if( is_user_alive( id ) || !(1 <= get_user_team(id) <= 2)) // Если игрок живой либо не состоит в командах Т или КТ
    {  
     client_print( id, print_chat, "* This command can only use a dead player." )  
     return PLUGIN_HANDLED  
    }


http://romanov4400.mybrute.com
 
predatorДата: Среда, 23.12.2009, 12:53:41 | Сообщение # 36
Лейтенант
Группа: Пользователи
Сообщений: 54
Репутация: 5
Статус: Не в сети
Так пойдет?

amx_revive - Количество разрешенных ре-респавнов игрока за раунд.

Code

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN_NAME  "Admin Revive"
#define PLUGIN_VERSION    "0.01"
#define PLUGIN_AUTHOR    "~Free*.*KILL~"

#define CS_TEAM_T    1
#define CS_TEAM_CT    2

new g_revive_limit
new pcv_amx_revive
new g_player_revive[33]

public plugin_init()
{
  register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )

  if( module_exists( "cstrike" ) )
  {
   register_event( "HLTV", "event_new_round", "a", "1=0", "2=0" )
   register_clcmd( "say /revive", "cmd_say_revive", ADMIN_ALL, "" )
   pcv_amx_revive = register_cvar( "amx_revive", "1" )
  }

  else
   pause( "ad", PLUGIN_NAME )
}

public client_putinserver( id ) g_player_revive[id] = 0

public event_new_round( )
{
  g_revive_limit = get_pcvar_num( pcv_amx_revive )

  if( g_revive_limit )
   g_player_revive = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
}

public cmd_say_revive( id, level, cid )
{
  if ( !g_revive_limit )
   return PLUGIN_CONTINUE

  if ( !cmd_access( id, level, cid, 0 ) )
   return PLUGIN_HANDLED

  new team = get_user_team( id )

  if ( team != CS_TEAM_T && team != CS_TEAM_CT )
  {
   client_print( id, print_chat, "* This command can be used only after the selection team." )
   return PLUGIN_HANDLED
  }

  if( is_user_alive( id ) )
  {
   client_print( id, print_chat, "* This command can only use a dead player." )
   return PLUGIN_HANDLED
  }

  if( ++g_player_revive[id] > g_revive_limit )
  {
   client_print( id, print_chat, "* You may not use this command more than %d times per round.", g_revive_limit )
   return PLUGIN_HANDLED
  }

  new name[32]
  get_user_name( id, name, charsmax( name ) )

  client_print( 0, print_chat, "Player ^"%s^" was revived. Be careful!", name )

  ExecuteHam( Ham_CS_RoundRespawn, id )

  return PLUGIN_HANDLED
}

/* Pawn syntax is normalized */

Прикрепления: revieve.sma(1.8 Kb)


Сообщение отредактировал predator - Среда, 23.12.2009, 16:20:26
 
FreeKILLДата: Среда, 23.12.2009, 21:25:34 | Сообщение # 37
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
predator, спасибо огромное!
Quote (FreeKILL)
ExecuteHamB(Ham_CS_RoundRespawn, id);  на ExecuteHam(Ham_CS_RoundRespawn, id);

что меняется? я менял туда сюда, искал разницу и не нашел.

Добавлено (23.12.2009, 21:25:34)
---------------------------------------------
плагин работает, но я непонимаю почему)

Code
g_revive_limit = get_pcvar_num( pcv_amx_revive )  

   if( g_revive_limit )  
    g_player_revive = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }  

я это понимаю так: если квар amx_revive равен тому что он равен( в данном случае "1") то g_player_revive все значения будут равны нулю

Code
if( ++g_player_revive[id] > g_revive_limit )  
   {  
    client_print( id, print_chat, "* You may not use this command more than %d times per round.", g_revive_limit )  
    return PLUGIN_HANDLED  
   }

если g_player_revive будет больше чем лимит(который устанавливается в amx_revive, и в данном случае равен "1") то пишется сообщение и плагин закрывает функцию возрождения.
но тут непонятно как g_player_revive может быть больше лимита если после использования возрождения к g_player_revive неприбавляется ничего

Code

new name[32]  
   get_user_name( id, name, charsmax( name ) )  

   client_print( 0, print_chat, "Player ^"%s^" was revived. Be careful!", name )  

   ExecuteHam( Ham_CS_RoundRespawn, id )  

   return PLUGIN_HANDLED

вот он возродил человека и все, ничего не изменилось, но почему же тогда плагин работает?) и когда возраждаеш себя больше чем установлен лимит, пишется что нельзя возрадится?
 
predatorДата: Четверг, 24.12.2009, 13:16:38 | Сообщение # 38
Лейтенант
Группа: Пользователи
Сообщений: 54
Репутация: 5
Статус: Не в сети
if( ++g_player_revive[id] > g_revive_limit ) - здесь ++ инкрементирует g_player_revive а затем полученное значение сравнивается с лимитом.
 
FreeKILLДата: Четверг, 24.12.2009, 15:42:51 | Сообщение # 39
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
вроде понял, то есть чтобы возрадится игроку нужно пройти весь цикл функций, и при этом каждый раз перед тем как он возродится он проходит через функцию
Code
if( ++g_player_revive[id] > g_revive_limit )

значит перед тем как он возрождается его g_player_revive увеличивается на 1, а значит как только будет привышен лимит сразу будет прекращен доступ к возрождению. я правильно все понял? получается функция if( ++g_player_revive[id] ) увеличивает g_player_revive на единицу и так и оставляет значение g_player_revive увеличеное на 1.
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » помогите перевести (функции)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

AMX Mod X Russian Community © 2006-2020