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

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

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

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

2 страниц V   1 2

Действия над тем у кого больше всего поинтов

, массивы ..
Статус пользователя ssx
сообщение 24.2.2015, 12:49
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Каждые 30 сек выполняется set_task

в таске никак не могу сделать выдачу итема тому у кого само больше значение в point[id]

Как правильно реализовать эту проверку ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 24.2.2015, 12:53
Сообщение #2
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Код:

static max, id, maxid
for(id=0; id < 33; id++)
{
if(point[id]>max)
{
max=point[id]
maxid=id
}
}


пс вместо max любое другое название переменной

Отредактировал: voed, - 24.2.2015, 12:58
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 12:58
Сообщение #3


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(voed @ 24.2.2015, 12:53) *
Код:

static max, id, maxid
for(id=0; id < 33; id++)
{
if(point[id]>max)
{
max=point[id]
maxid=id
}
}


А зачем maxid ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 12:59
Сообщение #4


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

ssx, чтобы записать id юзера, у которого больше всего поинтов
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
voed
сообщение 24.2.2015, 12:59
Сообщение #5
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(ssx @ 24.2.2015, 12:58) *
А зачем maxid ?

Цитата
Действия над тем у кого больше всего поинтов

Чтоб выполнить действие над игроком с самым большим кол-вом поинтов)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 13:01
Сообщение #6


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

то есть вот так правильно будет ?

Код:

public Task_point()
{
static max, id, maxid
for(id=0; id < 33; id++)
{
if(point[id]>max)
{
max=point[id]
maxid=id
}
}

if (is_user_connected(attacker) && is_user_alive(attacker))
{
new name[32]
get_user_name(maxid,name,31)
give_item(maxid, "weapon_smokegrenade")
client_print(0,print_chat,"Игрок %s получил дымовую гранату",name)
}


Отредактировал: ssx, - 24.2.2015, 13:05


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 24.2.2015, 13:02
Сообщение #7
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

ssx, да, верно
Только как я писал выше, переменную max переименуй)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 13:07
Сообщение #8


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Все верно теперь ?

Код:
public Task_point()
{
static max, id, maxid
for(id=0; id < 33; id++)
{
if(point[id]>max)
{
max=point[id]
maxid=id
}
}

if (is_user_alive(maxid))
{
new name[32]
get_user_name(maxid,name,31)
give_item(maxid, "weapon_smokegrenade")
client_print(0,print_chat,"Игрок %s получил дымовую гранату",name)
}


Отредактировал: ssx, - 24.2.2015, 13:08


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 13:08
Сообщение #9


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

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


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Нашел еще вот такой пример цикла

Код:
	static i, g_iMaxPlayers;
if(!g_iMaxPlayers) g_iMaxPlayers = get_maxplayers();
for(i=1; i <= g_iMaxPlayers; i++)


Он лучше или хуже того что выше ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 13:14
Сообщение #11


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

ssx, одно и тоже, как и это
вариантов много, как цикл делать

Код:
for(new i; i < get_maxplayers(); ++i)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 13:18
Сообщение #12


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(GOOD FELLOW @ 24.2.2015, 13:14) *
ssx, одно и тоже, как и это
вариантов много, как цикл делать

Код:
for(new i; i < get_maxplayers(); ++i)

Да , но в этом случае get_maxplayers() вызовется множество раз а в
Код:
static i, g_iMaxPlayers;
if(!g_iMaxPlayers) g_iMaxPlayers = get_maxplayers();
for(i=1; i <= g_iMaxPlayers; i++)

1 раз .


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 13:22
Сообщение #13


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

ssx, там с каждым новым "i" будет вызываться g_iMaxPlayers
а g_iMaxPlayers = get_maxplayers()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 13:42
Сообщение #14


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Что-то не прокатило

Сделал проверку на того у кого больше всего поинтов
Код:
public Point_check()
{
static max, id, maxid
for(id=0; id < 33; id++)
{
if(point[id]>max)
{
max=point[id]
maxid=id
}
}
new name[32]
get_user_name(maxid,name,31)

client_print(0,print_chat,"Игрок %s имеет больше всего поинтов",name)

}

Пишет постоянно вместо имени игрока имя сервера ...


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 13:47
Сообщение #15


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Код:
public Point_check() {
new max, maxid
for(new i; i <= get_maxplayers(); ++i) {
if(point[i] > max) {
max = point[i]
maxid = i
}
}
new name[32]
get_user_name(maxid, name, charsmax(name))
client_print(0, print_chat, "Игрок %s имеет больше всего поинтов", name)

}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 14:11
Сообщение #16


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Все равно так же имя сервера ...


Код:
public Point_check()
{
new max, maxid
for(new i; i <= get_maxplayers(); ++i)
{
if(point[i] > max)
{
max = point[i]
maxid = i
}
}
new name[32]
get_user_name(maxid,name,31)

client_print(0,print_chat,"Игрок %s имеет больше всего поинтов",name)
}


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 14:18
Сообщение #17


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

ssx, добавь в скуп, пока дома посмотрим на тест сервере
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя igas
сообщение 24.2.2015, 14:30
Сообщение #18


Стаж: 13 лет

Сообщений: 107
Благодарностей: 52
Полезность: 361

GOOD FELLOW, прочитай еще раз и еще раз как делать правильно циклы над игроками
ssx
Код:
public Point_check()
{
new iMax /* iMax - присвоено максимальное число поинтов? */
static iMaxPlayers, szName[32]

/* get_maxplayers() не будет вызываться каждый раз, данные уже присвоены статической перемеренной iMaxPlayers */
if(!iMaxPlayers)
iMaxPlayers = get_maxplayers()

/* цикл в случае get_maxplayers(), нужно начинать с 1 (new i = 1) */
for(new i = 1; i < iMaxPlayers; i++)
{
if(point[i] > iMax)
{
get_user_name(i, szName, charsmax(szName))
client_print(0, print_chat, "Игрок %s имеет больше всего поинтов", szName)
}
}
}


Отредактировал: igas, - 24.2.2015, 14:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 24.2.2015, 14:33
Сообщение #19


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

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

igas, хм, точно :D
лан, у всех бывают косяки
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 24.2.2015, 15:03
Сообщение #20


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

так и не смогли реализовать определение у кого больше поинтов ..


Нашел похожий функционал в плагине WarmUP Pro

нужная функция
Код:
public darresultado()
{
new resultadofinal = 0
new name[32]
new mensajes[256]
new bool:g_muchos
mensajes[0] = 0;
name[0] = 0;
g_muchos = false;
resultadofinal = 0

for(new i = 1; i <= 32 ; i++)
{

if( g_ganadores[i] == resultadofinal )
{
g_muchos = true;
get_user_name(i, name, 31)

formatex(mensajes, 255, "%s, %s", mensajes, name)
}

if( g_ganadores[i] > resultadofinal )
{
name[0] = 0;
mensajes[0] = 0;
g_muchos = false;
resultadofinal = g_ganadores[i]
get_user_name(i, name, 31)
formatex(mensajes, 255, "%s", name)
}
}

if( resultadofinal >= 1 )
{
if( !g_muchos )
{
ColorChat(0, GREEN, "^x04[WUP] The winner is:^x03 %s^x04 with^x03 %d^x04 Flags", name, resultadofinal)

if( get_pcvar_num(logtofilecvar) == 1 )
log_to_file(LOGFILE, "The Winner of WarmUP was: %s with %d Flags", name, resultadofinal)

}
else if( g_muchos )
{
ColorChat(0, GREEN, "^x04[WUP] ^x03%s ^x04 Win the WarmUP Rounds with^x03 %d^x04 Flags", mensajes, resultadofinal)

if( get_pcvar_num(logtofilecvar) == 1 )
log_to_file(LOGFILE, "%s Win the WarmUP Rounds with %d Flags", mensajes, resultadofinal)

}
}

if( resultadofinal == 0 )
{
ColorChat(0, GREEN, "[WUP] NoBody won the WarmUP Round")

if( get_pcvar_num(logtofilecvar) == 1 )
log_to_file(LOGFILE, "NoBody won the WarmUP Round")

}

batata()

}


public batata()
{
for(new i = 0; i <= 32 ; i++)
{
g_ganadores[i] = 0;
}
}


Как переделать под вывод (запись в массив) того у кого больше всего поинтов?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: