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

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

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

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

2 страниц V   1 2

Лучший игрок раунда

Статус пользователя zombie
сообщение 26.4.2015, 20:10
Сообщение #1


Стаж: 11 лет

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

Не могу вывести в конце раунда лучшего игрока по кол-ву урона (скрин ниже).
Все что получилось это подсчитать урон игрока .
Скрытый текст
Код:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

new Float:user_damage[33]

public plugin_init ( )
{
RegisterHam ( Ham_TakeDamage, "player", "Damage")
}

public Damage ( victim, weapon, attacker, Float:damage, damagebits )
{
if (get_user_team ( attacker ) != get_user_team ( victim ) && attacker != victim)
{
user_damage[attacker] += damage
}
}


Прикрепленные файлы:
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя dialyabev
сообщение 26.4.2015, 20:11
Сообщение #2


Стаж: 11 лет

Сообщений: 243
Благодарностей: 120
Полезность: 596

кидай цикл в конце раунде, в цикле сверяешь каждого и у кого больше всего выводишь.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zombie
сообщение 26.4.2015, 20:28
Сообщение #3


Стаж: 11 лет

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

Цитата(dialyabev @ 26.4.2015, 21:11) *
кидай цикл в конце раунде, в цикле сверяешь каждого и у кого больше всего выводишь.

сделал цикл ,а дальше я не знаю как подсчитать лидера , можешь помочь?)
Код:
public round_end()
{
for(new i = 0 ; i < get_maxplayers(); i++)
{
new name[33]
get_user_name(i,name,32)
client_print(i,print_chat,"Лучший игрок: %s [ %d урона]",name,user_damage)
}
}


Отредактировал: zombie, - 26.4.2015, 20:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
OverGame
сообщение 26.4.2015, 23:55
Сообщение #4
Стаж: 11 лет

Сообщений: 384
Благодарностей: 217
Полезность: 348

Код:
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < ColorChat >

enum _:score
{
frags,
Float:dmg,
hs
}

new niceP[33][score]

new hudsync
new nMoney

public plugin_init()
{
register_plugin("Nice Gamer", "1.0", "Got Milk?")

RegisterHam(Ham_TakeDamage, "player", "hook_TakeDamage")
register_event("DeathMsg", "Event_DeathMessage", "a")
register_logevent("event_round_end", 2, "1=Round_End")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
nMoney = register_cvar("nkiller_money", "1000")

hudsync = CreateHudSyncObj()
}

public event_round_end ()
{
new Players[32], num, tmpf, Float:tmpd, tmpid
get_players( Players, num )

for( new i; i < 32; i++)
{
if ( niceP[i][frags] > tmpf )
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
else if ( niceP[i][frags] == tmpf && niceP[i][dmg] > tmpd)
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
}

if ( tmpf > 0 )
{
new name[32], msg[1024];
get_user_name(tmpid, name, 31);

format( msg, charsmax(msg), "Лучшим игроком раунда стал^n %s^nУбив %d игроков и нанеся %d урона^nКрасава парень!", name, tmpf, floatround(tmpd, floatround_round) )

cs_set_user_money( tmpid, cs_get_user_money(tmpid) + get_pcvar_num(nMoney) )
ColorChat( tmpid, NORMAL, "^x3%s^x1 вы получили^x4 %d^x1 $ за то, что были лучшим в раунде.", name, get_pcvar_num(nMoney) )

set_hudmessage(255, 0, 0, -1.0, 0.17, 0, 5.0)
ShowSyncHudMsg(0, hudsync, msg)
}
}

public hook_TakeDamage(Victim, inflictor, Attacker, Float:damage, damagebits)
{
if( inflictor == Attacker )
niceP[Attacker][dmg] += damage
else
{
static classname[32]
pev (inflictor, pev_classname, classname, 31)
if( equal (classname, "grenade") )
niceP[Attacker][dmg] += damage
}

if ( get_pdata_int(Victim, 75, 5) == HIT_HEAD )
niceP[Attacker][hs]++

return HAM_IGNORED
}

public Event_DeathMessage()
niceP[read_data(1)][frags]++

public event_round_start ( )
for (new i; i < 32; i++)
for ( new j; j < 3; j++)
niceP[i][j] = 0

public client_disconnect(id)
for ( new j; j < 3; j++)
niceP[id][j] = 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 27.4.2015, 1:41
Сообщение #5
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

SortCustom1D
SortCustom2D

Отредактировал: csnet, - 27.4.2015, 1:41


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zombie
сообщение 27.4.2015, 7:05
Сообщение #6


Стаж: 11 лет

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

Цитата(csnet @ 27.4.2015, 2:41) *
SortCustom1D
SortCustom2D

Спасибо) . Тему закройте.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 12:46
Сообщение #7


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Скрытый текст
Цитата(OverGame @ 27.4.2015, 0:55) *
Код:
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < ColorChat >

enum _:score
{
frags,
Float:dmg,
hs
}

new niceP[33][score]

new hudsync
new nMoney

public plugin_init()
{
register_plugin("Nice Gamer", "1.0", "Got Milk?")

RegisterHam(Ham_TakeDamage, "player", "hook_TakeDamage")
register_event("DeathMsg", "Event_DeathMessage", "a")
register_logevent("event_round_end", 2, "1=Round_End")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
nMoney = register_cvar("nkiller_money", "1000")

hudsync = CreateHudSyncObj()
}

public event_round_end ()
{
new Players[32], num, tmpf, Float:tmpd, tmpid
get_players( Players, num )

for( new i; i < 32; i++)
{
if ( niceP[i][frags] > tmpf )
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
else if ( niceP[i][frags] == tmpf && niceP[i][dmg] > tmpd)
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
}

if ( tmpf > 0 )
{
new name[32], msg[1024];
get_user_name(tmpid, name, 31);

format( msg, charsmax(msg), "Лучшим игроком раунда стал^n %s^nУбив %d игроков и нанеся %d урона^nКрасава парень!", name, tmpf, floatround(tmpd, floatround_round) )

cs_set_user_money( tmpid, cs_get_user_money(tmpid) + get_pcvar_num(nMoney) )
ColorChat( tmpid, NORMAL, "^x3%s^x1 вы получили^x4 %d^x1 $ за то, что были лучшим в раунде.", name, get_pcvar_num(nMoney) )

set_hudmessage(255, 0, 0, -1.0, 0.17, 0, 5.0)
ShowSyncHudMsg(0, hudsync, msg)
}
}

public hook_TakeDamage(Victim, inflictor, Attacker, Float:damage, damagebits)
{
if( inflictor == Attacker )
niceP[Attacker][dmg] += damage
else
{
static classname[32]
pev (inflictor, pev_classname, classname, 31)
if( equal (classname, "grenade") )
niceP[Attacker][dmg] += damage
}

if ( get_pdata_int(Victim, 75, 5) == HIT_HEAD )
niceP[Attacker][hs]++

return HAM_IGNORED
}

public Event_DeathMessage()
niceP[read_data(1)][frags]++

public event_round_start ( )
for (new i; i < 32; i++)
for ( new j; j < 3; j++)
niceP[i][j] = 0

public client_disconnect(id)
for ( new j; j < 3; j++)
niceP[id][j] = 0

Не компилируется.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lettro
сообщение 1.6.2015, 13:52
Сообщение #8


Стаж: 11 лет

Сообщений: 61
Благодарностей: 15
Полезность: 150

Altaj, инклуд ColorChat'a?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 14:44
Сообщение #9


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Цитата(Lettro @ 1.6.2015, 13:52) *
Altaj, инклуд ColorChat'a?

Нет. Инклуды у меня есть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lettro
сообщение 1.6.2015, 14:50
Сообщение #10


Стаж: 11 лет

Сообщений: 61
Благодарностей: 15
Полезность: 150

Altaj, ошибку можно?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 15:05
Сообщение #11


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Цитата(Lettro @ 1.6.2015, 15:50) *
Altaj, ошибку можно?

Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dukkhaz0r
сообщение 1.6.2015, 16:31
Сообщение #12


Стаж: 12 лет

Сообщений: 343
Благодарностей: 294
Полезность: 812

Altaj, Код:
#include <amxmodx>
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < ColorChat >

enum _:score
{
frags,
Float:dmg,
hs
}

new niceP[33][score]

new hudsync
new nMoney

public plugin_init()
{
register_plugin("Nice Gamer", "1.0", "Got Milk?")

RegisterHam(Ham_TakeDamage, "player", "hook_TakeDamage")
register_event("DeathMsg", "Event_DeathMessage", "a")
register_logevent("event_round_end", 2, "1=Round_End")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
nMoney = register_cvar("nkiller_money", "1000")

hudsync = CreateHudSyncObj()
}

public event_round_end ()
{
new Players[32], num, tmpf, Float:tmpd, tmpid
get_players( Players, num )

for( new i; i < 32; i++)
{
if ( niceP[i][frags] > tmpf )
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
else if ( niceP[i][frags] == tmpf && niceP[i][dmg] > tmpd)
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
}

if ( tmpf > 0 )
{
new name[32], msg[1024];
get_user_name(tmpid, name, 31);

format( msg, charsmax(msg), "Лучшим игроком раунда стал^n %s^nУбив %d игроков и нанеся %d урона^nКрасава парень!", name, tmpf, floatround(tmpd, floatround_round) )

cs_set_user_money( tmpid, cs_get_user_money(tmpid) + get_pcvar_num(nMoney) )
ColorChat( tmpid, NORMAL, "^x3%s^x1 вы получили^x4 %d^x1 $ за то, что были лучшим в раунде.", name, get_pcvar_num(nMoney) )

set_hudmessage(255, 0, 0, -1.0, 0.17, 0, 5.0)
ShowSyncHudMsg(0, hudsync, msg)
}
}

public hook_TakeDamage(Victim, inflictor, Attacker, Float:damage, damagebits)
{
if( inflictor == Attacker )
niceP[Attacker][dmg] += damage
else
{
static classname[32]
pev (inflictor, pev_classname, classname, 31)
if( equal (classname, "grenade") )
niceP[Attacker][dmg] += damage
}

if ( get_pdata_int(Victim, 75, 5) == HIT_HEAD )
niceP[Attacker][hs]++

return HAM_IGNORED
}

public Event_DeathMessage()
niceP[read_data(1)][frags]++

public event_round_start ( )
for (new i; i < 32; i++)
for ( new j; j < 3; j++)
niceP[i][j] = 0

public client_disconnect(id)
for ( new j; j < 3; j++)
niceP[id][j] = 0


Отредактировал: Dukkhaz0r, - 1.6.2015, 16:31


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 17:48
Сообщение #13


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Dukkhaz0r, все равно не компилируется.
Прикрепленное изображение
Код:
ColorChat( tmpid, NORMAL, "^x3%s^x1 вы получили^x4 %d^x1 $ за то, что были лучшим в раунде.", name, get_pcvar_num(nMoney) )

Что здесь не так?

Отредактировал: Altaj, - 1.6.2015, 17:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 1.6.2015, 17:59
Сообщение #14


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Altaj, у вас инклуд другой колорчата, вот
Код:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>

enum _:score
{
frags,
Float:dmg,
hs
}

new niceP[33][score]

new hudsync
new nMoney

public plugin_init()
{
register_plugin("Nice Gamer", "1.0", "Got Milk?")

RegisterHam(Ham_TakeDamage, "player", "hook_TakeDamage")
register_event("DeathMsg", "Event_DeathMessage", "a")
register_logevent("event_round_end", 2, "1=Round_End")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
nMoney = register_cvar("nkiller_money", "1000")

hudsync = CreateHudSyncObj()
}

public event_round_end ()
{
new Players[32], num, tmpf, Float:tmpd, tmpid
get_players( Players, num )

for( new i; i < 32; i++)
{
if ( niceP[i][frags] > tmpf )
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
else if ( niceP[i][frags] == tmpf && niceP[i][dmg] > tmpd)
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
}

if ( tmpf > 0 )
{
new name[32], msg[1024];
get_user_name(tmpid, name, 31);

format( msg, charsmax(msg), "Лучшим игроком раунда стал^n %s^nУбив %d игроков и нанеся %d урона^nКрасава парень!", name, tmpf, floatround(tmpd, floatround_round) )

cs_set_user_money( tmpid, cs_get_user_money(tmpid) + get_pcvar_num(nMoney) )
client_print_color( tmpid, DontChange, "^3%s^1 вы получили^4 %d^1 $ за то, что были лучшим в раунде.", name, get_pcvar_num(nMoney) )

set_hudmessage(255, 0, 0, -1.0, 0.17, 0, 5.0)
ShowSyncHudMsg(0, hudsync, msg)
}
}

public hook_TakeDamage(Victim, inflictor, Attacker, Float:damage, damagebits)
{
if( inflictor == Attacker )
niceP[Attacker][dmg] += damage
else
{
static classname[32]
pev (inflictor, pev_classname, classname, 31)
if( equal (classname, "grenade") )
niceP[Attacker][dmg] += damage
}

if ( get_pdata_int(Victim, 75, 5) == HIT_HEAD )
niceP[Attacker][hs]++

return HAM_IGNORED
}

public Event_DeathMessage()
niceP[read_data(1)][frags]++

public event_round_start ( )
for (new i; i < 32; i++)
for ( new j; j < 3; j++)
niceP[i][j] = 0

public client_disconnect(id)
for ( new j; j < 3; j++)
niceP[id][j] = 0

Компилировать тут, или там же взять инклуд.

Причина: Поправил указатели цвета
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 18:25
Сообщение #15


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Все хорошо, но как сделать, чтобы сообщения писались в чат, а не выводились худами?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 1.6.2015, 18:30
Сообщение #16


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Altaj, все сообщения?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 18:32
Сообщение #17


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Цитата(Bloo @ 1.6.2015, 19:30) *
Altaj, все сообщения?

Да. У меня никогда никаких худов не было на сервере.

Отредактировал: Altaj, - 1.6.2015, 18:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 1.6.2015, 18:39
Сообщение #18


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Altaj, как то так
Код:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>

enum _:score
{
frags,
Float:dmg,
hs
}

new niceP[33][score]

new nMoney

public plugin_init()
{
register_plugin("Nice Gamer", "1.0", "Got Milk?")

RegisterHam(Ham_TakeDamage, "player", "hook_TakeDamage")
register_event("DeathMsg", "Event_DeathMessage", "a")
register_logevent("event_round_end", 2, "1=Round_End")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
nMoney = register_cvar("nkiller_money", "1000")
}

public event_round_end ()
{
new Players[32], num, tmpf, Float:tmpd, tmpid
get_players( Players, num )

for( new i; i < 32; i++)
{
if ( niceP[i][frags] > tmpf )
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
else if ( niceP[i][frags] == tmpf && niceP[i][dmg] > tmpd)
{
tmpid = i
tmpf = niceP[i][frags]
tmpd = niceP[i][dmg]
}
}

if ( tmpf > 0 )
{
new name[32];
get_user_name(tmpid, name, 31);

client_print_color(0, DontChange, "^1Лучшим игроком раунда стал ^4%s.", name )
client_print_color(0, DontChange, "^1Убив ^4%d ^1игроков и нанеся ^4%d ^1урон.", tmpf, floatround(tmpd, floatround_round))

cs_set_user_money( tmpid, cs_get_user_money(tmpid) + get_pcvar_num(nMoney) )
client_print_color( tmpid, DontChange, "^x3%s^x1 вы получили^x4 %d^x1 $ за то, что были лучшим в раунде.", name, get_pcvar_num(nMoney) )
}
}

public hook_TakeDamage(Victim, inflictor, Attacker, Float:damage, damagebits)
{
if( inflictor == Attacker )
niceP[Attacker][dmg] += damage
else
{
static classname[32]
pev (inflictor, pev_classname, classname, 31)
if( equal (classname, "grenade") )
niceP[Attacker][dmg] += damage
}

if ( get_pdata_int(Victim, 75, 5) == HIT_HEAD )
niceP[Attacker][hs]++

return HAM_IGNORED
}

public Event_DeathMessage()
niceP[read_data(1)][frags]++

public event_round_start ( )
for (new i; i < 32; i++)
for ( new j; j < 3; j++)
niceP[i][j] = 0

public client_disconnect(id)
for ( new j; j < 3; j++)
niceP[id][j] = 0

Только сообщение нужно поправить, или в несколько строк выводить.
Сделал сообщение в две строки, проверь, мог поломать.

Причина: Сделал сообщение в две строки, проверь, мог поломать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 1.6.2015, 20:39
Сообщение #19


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Bloo, только зашел спросить про две строки, а тут уже все готово. ))
Спасибо еще раз - то, что я и хотел. Все работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Altaj
сообщение 4.6.2015, 8:59
Сообщение #20


Стаж: 12 лет
Город: Барнаул

Сообщений: 456
Благодарностей: 442
Полезность: 565

Bloo, ошибка в логах.
Код:
L 06/04/2015 - 00:58:12: [AMXX] Displaying debug trace (plugin "nice_player.amxx")
L 06/04/2015 - 00:58:12: [AMXX] Run time error 4: index out of bounds
L 06/04/2015 - 00:58:12: [AMXX] [0] nice_player.sma::hook_TakeDamage (line 66)
L 06/04/2015 - 00:58:12: [AMXX] Displaying debug trace (plugin "nice_player.amxx")
L 06/04/2015 - 00:58:12: [AMXX] Run time error 4: index out of bounds
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: