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

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

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

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

Изменить целые числа на дробные

Статус пользователя DoNotFollowM
сообщение 11.4.2016, 8:39
Сообщение #1
Стаж: 10 лет

Сообщений: 108
Благодарностей: 18
Полезность: 135

Кто сможет изменить в плагине целые числа на дробные
Cкрытый текст

/*
* AMX Mod X Script
*
* "Killa HP"
* © jas0n, November 2007
*
* This file is provided as is (no warranties)
*
* Описание:
* Плагин показывает сообщение в чате "You have been killed by AttackeR [78 HP, 100 AP][13 Kills, 2 Deaths] from distance 36 meters." жертве
* и "Enemy VictiM [21 Kills, 9 Deaths] down!" + звук "Enemy Down!" атакующему.
*
* Переменные:
* // Показывать сообщение "You have been killed by AttackeR [...]" жертве (default: 1)
* // 0 - Выключить
* // 1 - Включить
* kh_showvictim <0|1>
*
* // Показывать сообщение "Enemy VictiM [...] down!" атакующему (default: 1)
* // 0 - Выключить
* // 1 - Включить
* kh_showkiller <0|1>
*
* // Проигрывание звука "Enemy down!" атакующему (default: 1)
* // 0 - Выключить
* // 1 - Включить
* kh_playsound <0|1>
*
* Переменные LANG файла:
* :KILLER_NAME: - Имя атакующего
* :KILLER_HEALTH: - Оставшееся количество здоровья атакующего
* :KILLER_ARMOR: - Оставшееся количество брони атакующего
* :KILLER_FRAGS: - Количество фрагов атакующего
* :KILLER_DEATHS: - Количество смертей атакующего
*
* :VICTIM_NAME: - Имя жертвы
* :VICTIM_FRAGS: - Количество фрагов жертвы
* :VICTIM_DEATHS: - Количество смертей жертвы
*
* :SHOT_DISTANCE: - Расстояние выстрела
*
* * С помощью вышепреведенных переменных в файле 'amxmodx\data\lang\killa_hp.txt' легко формируется и изменяется текст сообщения,
* но следует учитывать, что длина уже сформированого сообщения, которое выводится на экран, не должна превышать 191 символ.
* * Для показа цветных сообщений необходимо в файле словаря 'amxmodx\data\lang\killa_hp.txt' использовать
* тэги [g]green_color[/g] и [t]team_color[/t].
* * В данном плагине цвет [t]team_color[/t] изменен на цвет противоположной команды, т.е. если вы играете за CT, то цвет
* будет красный, если за T - синий. Это сделано для того, чтоб ник игрока убившего Вас в сообщении
* показывался цветом его команды, а не Вашей.
*
* Список версий:
* [12/11/07 13:43] v1.0
* * First release
*
* [12/11/07 19:00] v1.1
* * Message bug fix
*
* [14/01/08 14:08] v1.2b
* * Minor optimization;
* * Now message prints to victim's console too
* * Support for AmxModX ver. < 1.8.0
*
* [04/04/08 09:29] v1.3
* * Some optimizations
* * Removed dependence of <cstrike> module
*
* [26/05/08 14:58] v1.4
* * Removed console message printing
* * Player name now colored by his team-color
* * 'Enemy Down' sound playing to attacker
*
* [11/11/09 14:20] v1.5
* * Added cvars killa_hp_sound
* * Added lang file (multilingual support)
* * Color configuration tags [g] and [t] for Green and Team colors accordingly
*
* [22/06/10 12:49] v1.6
* * Cvar killa_hp_sound changed to kh_playsound
* * Added cvars kh_showvictim and kh_showkiller
* * Added shot distance display
* * Fixed potential bug in message buffer
*
* ColorChat:
* ^x01 Стандартный цвет
* ^x03 Цвет Команды. Т.е. Terrorist - Красный цвет, Counter-Terrorist - Синий цвет и SPECTATOR или UNASSIGNED - Серый цвет.
* ^x04 Зеленый цвет
*
* * Цвета красный, серый, и синий не могут быть использованы на одной линии. Этого сделать невозможно!
*
* Благодарность:
* * VipPredator [dedicated-server.ru]
*/

#include <amxmodx>
#include <colorchat>

new const PLUGIN_NAME[] = "Killa HP"
new const PLUGIN_VERSION[] = "1.6"
new const PLUGIN_AUTHOR[] = "jas0n"

#define MAX_PLAYERS 32
#define MAX_NAME_LENGTH 32
#define MAX_MSG_LENGTH 192
#define MAX_BUF_LENGTH 1024
#define SOUND_PLAY_DELAY 3

#define charsmax(%1) (sizeof(%1)-1)

new const g_szSoundFile[] = "radio/enemydown.wav"
new Float:cMeter = 32.00
new g_LastPlayedTime[MAX_PLAYERS+1]

new pcvar_showvictim
new pcvar_showkiller
new pcvar_playsound

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

register_dictionary ( "killa_hp.txt" )

register_event ( "DeathMsg", "evDeath", "a", "1>0" )

pcvar_showvictim = register_cvar ( "kh_showvictim", "1" )
pcvar_showkiller = register_cvar ( "kh_showkiller", "1" )
pcvar_playsound = register_cvar ( "kh_playsound", "1" )
}

public plugin_precache()
{
precache_sound ( g_szSoundFile )
}

public evDeath()
{
static aID, vID
static message[MAX_MSG_LENGTH], buffer[MAX_BUF_LENGTH]
static aName[MAX_NAME_LENGTH], vName[MAX_NAME_LENGTH]
static n_aHealth, n_aArmor, n_aFrags, n_aDeaths
static n_vFrags, n_vDeaths
static aHealth[4], aArmor[4], aFrags[5], aDeaths[5]
static vFrags[5], vDeaths[5]
static aTeam, aOrigin[3], vOrigin[3], n_szDistance, szDistance[5]

aID = read_data ( 1 )
vID = read_data ( 2 )

if ( vID == aID ) return

get_user_name ( aID, aName, charsmax ( aName ) )
get_user_name ( vID, vName, charsmax ( vName ) )

n_aHealth = get_user_health ( aID )
n_aArmor = get_user_armor ( aID )
n_aFrags = get_user_frags ( aID )
n_aDeaths = get_user_deaths ( aID )
get_user_origin ( aID, aOrigin )

aTeam = get_user_team ( aID )

n_vFrags = get_user_frags ( vID )
n_vDeaths = get_user_deaths ( vID )
get_user_origin ( vID, vOrigin )

n_szDistance = floatround ( get_distance ( aOrigin, vOrigin ) / cMeter )

num_to_str ( n_aHealth, aHealth, charsmax ( aHealth ) )
num_to_str ( n_aArmor, aArmor, charsmax ( aArmor ) )
num_to_str ( n_aFrags, aFrags, charsmax ( aFrags ) )
num_to_str ( n_aDeaths, aDeaths, charsmax ( aDeaths ) )
num_to_str ( n_vFrags, vFrags, charsmax ( vFrags ) )
num_to_str ( n_vDeaths, vDeaths, charsmax ( vDeaths ) )
num_to_str ( n_szDistance, szDistance, charsmax ( szDistance ) )

if ( get_pcvar_num ( pcvar_showvictim ) )
{
formatex ( buffer, charsmax ( buffer ), "%L", LANG_SERVER, "KH_VICTIM_MSG" )
format_cvars ( buffer, charsmax ( buffer ), aName, aHealth, aArmor, aFrags, aDeaths, vName, vFrags, vDeaths, szDistance )
format_color ( buffer, charsmax ( buffer ), 1 )
formatex ( message, charsmax ( message ), "^x01%s", buffer )

switch ( aTeam )
{
case 1: ColorChat ( vID, RED, message )
case 2: ColorChat ( vID, BLUE, message )
}
}

if ( get_pcvar_num ( pcvar_playsound ) && ( ( get_systime() - g_LastPlayedTime[aID] ) > SOUND_PLAY_DELAY ) )
{
client_cmd ( aID, "spk %s", g_szSoundFile )
g_LastPlayedTime[aID] = get_systime()
}

if ( get_pcvar_num ( pcvar_showkiller ) )
{
formatex ( buffer, charsmax ( buffer ), "%L", LANG_SERVER, "KH_ATTACKER_MSG" )
format_cvars ( buffer, charsmax ( buffer ), aName, aHealth, aArmor, aFrags, aDeaths, vName, vFrags, vDeaths, szDistance )
format_color ( buffer, charsmax ( buffer ), 1 )
formatex ( message, charsmax ( message ), "^x01%s", buffer )

switch ( aTeam )
{
case 1: ColorChat ( aID, BLUE, message )
case 2: ColorChat ( aID, RED, message )
}
}
}

stock format_cvars ( buffer[], length, aName[], aHealth[], aArmor[], aFrags[], aDeaths[], vName[], vFrags[], vDeaths[], szDistance[] )
{
replace_all ( buffer, length, ":KILLER_NAME:", aName )
replace_all ( buffer, length, ":KILLER_HEALTH:", aHealth )
replace_all ( buffer, length, ":KILLER_ARMOR:", aArmor )
replace_all ( buffer, length, ":KILLER_FRAGS:", aFrags )
replace_all ( buffer, length, ":KILLER_DEATHS:", aDeaths )
replace_all ( buffer, length, ":VICTIM_NAME:", vName )
replace_all ( buffer, length, ":VICTIM_FRAGS:", vFrags )
replace_all ( buffer, length, ":VICTIM_DEATHS:", vDeaths )
replace_all ( buffer, length, ":SHOT_DISTANCE:", szDistance )
}

stock format_color ( buffer[], length, colored_message )
{
replace_all ( buffer, length, "^x01", "" )
replace_all ( buffer, length, "^x03", "" )
replace_all ( buffer, length, "^x04", "" )

if ( colored_message )
{
replace_all ( buffer, length, "[t]", "^x03" )
replace_all ( buffer, length, "[g]", "^x04" )
replace_all ( buffer, length, "[/t]", "^x01" )
replace_all ( buffer, length, "[/g]", "^x01" )
}
else
{
replace_all ( buffer, length, "[t]", "" )
replace_all ( buffer, length, "[g]", "" )
replace_all ( buffer, length, "[/t]", "" )
replace_all ( buffer, length, "[/g]", "" )
}
}

Чтоб дистанция с которой тебя убили не округлялась а была типо 1.56
На кнайф хочу поставить

Отредактировал: DoNotFollowM, - 11.4.2016, 8:40
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Algalon
сообщение 11.4.2016, 12:22
Сообщение #2
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

DoNotFollowM, используй тег "подсветка павна" при публикации кода плагина, а то глаза режет.

Ищи в исподники строки и меняй их:
Код:
new Float:cMeter = 32.00
->
Код:
new const Float:cMeter = 0.0254


Код:
n_szDistance = floatround ( get_distance ( aOrigin, vOrigin ) / cMeter )
->
Код:
n_szDistance = get_distance ( aOrigin, vOrigin ) * cMeter



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Podarok
сообщение 11.4.2016, 13:31
Сообщение #3
Стаж: 14 лет

Сообщений: 47
Благодарностей: 3
Полезность: 51

Почему бы вместо deathmsg не использовать HAM_KILLED forward?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 11.4.2016, 13:54
Сообщение #4
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

Podarok, ты посмотри на дату создания плагина и сразу все поймешь.
Код:
* "Killa HP"
* © jas0n, November 2007
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DoNotFollowM
сообщение 11.4.2016, 14:17
Сообщение #5
Стаж: 10 лет

Сообщений: 108
Благодарностей: 18
Полезность: 135

Algalon,
вот так отображается, скриншот
https://dropmefiles.com/DCqYi
сорри за обменник
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 11.4.2016, 15:01
Сообщение #6
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

DoNotFollowM, недоглядел до конца. pardon.gif
Что же ты не сказал про ошибки при компиляции, а то я гадал что не так пошло.

Код:
static aTeam, aOrigin[3], vOrigin[3], n_szDistance, szDistance[5]
->
Код:
static aTeam, aOrigin[3], vOrigin[3], Float:n_szDistance, szDistance[5]


Код:
num_to_str ( n_szDistance, szDistance,  charsmax ( szDistance ) )
->
Код:
float_to_str ( n_szDistance, szDistance,  charsmax ( szDistance ) )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DoNotFollowM
сообщение 11.4.2016, 15:32
Сообщение #7
Стаж: 10 лет

Сообщений: 108
Благодарностей: 18
Полезность: 135

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