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

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

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

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

3 страниц V   1 2 3

добавление проверки / кодинг для начинающих :)

exec1337
сообщение 8.5.2013, 14:18
Сообщение #21
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

letsplayer,меню всёравно появляется(я был 1).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 8.5.2013, 14:48
Сообщение #22
Стаж: 13 лет

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

Цитата(exec1337 @ 8.5.2013, 15:18) *
letsplayer,меню всёравно появляется(я был 1).

Посмотри на свое условие, ты сделал так, что пока людей больше двух - меню будет блокироваться. А когда ты один, то это не больше двух)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 8.5.2013, 15:11
Сообщение #23
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(letsplayer @ 8.5.2013, 16:48) *
Посмотри на свое условие, ты сделал так, что пока людей больше двух - меню будет блокироваться. А когда ты один, то это не больше двух)

Тот самый момент,когда сам не понимаешь,что написал... Действительно,я накосячил. Спасибо,что объяснили.

А как понимать пост #20?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 8.5.2013, 15:20
Сообщение #24
Стаж: 13 лет

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

Цитата(exec1337 @ 8.5.2013, 17:11) *
Тот самый момент,когда сам не понимаешь,что написал... Действительно,я накосячил. Спасибо,что объяснили.

А как понимать пост #20?

Получаем кол-во макс. игроков один раз вместо 32-х.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 8.5.2013, 16:09
Сообщение #25
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

letsplayer,т.е. так?
Код:
fnGetAlive()
{
static iAlive, id
iAlive = 0

new iMaxPLS = get_maxplayers();
for (id = 1; id <= iMaxPLS; id++)
{
if (is_user_alive(id))
iAlive++
}

return iAlive;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 8.5.2013, 19:27
Сообщение #26
Стаж: 13 лет

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

Цитата(exec1337 @ 8.5.2013, 18:09) *
letsplayer,т.е. так?
Код:
fnGetAlive()
{
static iAlive, id
iAlive = 0

new iMaxPLS = get_maxplayers();
for (id = 1; id <= iMaxPLS; id++)
{
if (is_user_alive(id))
iAlive++
}

return iAlive;
}

Код:
fnGetAlive()
{
new iAlive;

new iMaxPLS = get_maxplayers();
for (new id = 1; id <= iMaxPLS; id++)
{
if (is_user_alive(id))
iAlive++
}

return iAlive;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 8.5.2013, 19:50
Сообщение #27


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

new g_iPlayersData[ MAX_CLIENTS ]; // Массив с индексами полученных игроков.
new g_iPlayersFound; // Кол-во найденных игроков - оффсет для массива который выше.

Код:
#include < amxmodx >

#define MAX_CLIENTS 32

new g_iPlayersData[ MAX_CLIENTS ];

new g_iPlayersFound,
g_iMaxClients;

public plugin_init()
{
g_iMaxClients = get_maxplayers( );
}

public UTIL_GetPlayersAlive( )
{
g_iPlayersFound = 0;

new iCell;

for( iCell = 1; iCell <= g_iMaxClients; iCell++ )
{
if( !is_user_alive( iCell ) )
{
continue;
}

g_iPlayersData[ g_iPlayersFound++ ] = iCell;
}
}



Хотя по оптимизации лучше использовать get_players,но уж не навижу я её.

Отредактировал: Andrei, - 8.5.2013, 19:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 8.5.2013, 20:49
Сообщение #28
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Так и не понял в чём заключается 'оптимизация',но сделал,как сказали гуру.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 14.5.2013, 20:42
Сообщение #29


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Меньше вызова нативов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 14.5.2013, 20:44
Сообщение #30
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

=меньше нагрузка на сервер?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 14.5.2013, 21:26
Сообщение #31


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Цитата(exec1337 @ 14.5.2013, 21:44) *
=меньше нагрузка на сервер?


Именно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Sky Cat
сообщение 28.12.2013, 14:28
Сообщение #32
Стаж: 13 лет
Город: Белгород

Сообщений: 1179
Благодарностей: 734
Полезность: 1056

Цитата(exec1337 @ 28.12.2013, 16:27) *
Трабла в следующем, буду признателен, если придумаете, как исправить:
Есть плагин, который при убийстве с ножа выполняет действие. Всё нормально работает, но если кидая смертельную гранату переключиться на нож, то сервер подумает, что фраг опять же сделан с ножа и выполнит действие/функцию.
Как быть?

Такая проверка не помогла:
Код:
new iAttacker = read_data(1);
new iVictim = read_data(2);

if(is_user_connected(iAttacker) && iAttacker != iVictim && get_user_weapon(iAttacker) == CSW_KNIFE && get_user_weapon(iAttacker) != CSW_HEGRENADE && g_RNum > 1)



Также как будет работать такой код? У меня проверка вообще никак не работает...
А надо, чтобы до гейм_коммектинг не показывало худ.
Код:
...
register_logevent("Game_Commencing", 2, "0=World triggered", "1=Game_Commencing")
...
public Game_Commencing()
{
iRound = 0;
}
....
public fnc()
{
if(iRound == -1)
{
return
}else{
set_hudmessage(0, 225, 0, -1.0, 0.25, 2, 2.0, 6.0, _, _, -1)
ShowSyncHudMsg(0, g_SyncMsgObj, MSG1)
}
}

Запилите в спойлер коды все. Форум ломается


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


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

актуально?
логика страдает
сервер думает то, что написано в плагине

get_user_weapon - получает текущие оружие в руках, а надо получать то оружие, которым убили игрока
это совершенно различные вещи

очевидно в плагине ловится событие смерти
Код:

Name: DeathMsg
Structure:
byte KillerID
byte VictimID
byte IsHeadshot
string TruncatedWeaponName


так что
Код
weapon = read_data(4)

тут думаю объяснять не надо ни чего
а только потом if .,. (weapon == CSW_HEGRENADE) ....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 5.1.2014, 4:17
Сообщение #34
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Legenda, да, всё верно.
Что-то я даже не подумал об том, что проверка чекает оружие в руках...

Код:
public Ev_DeathMsg()
{
new iAttacker = read_data(1);
new iVictim = read_data(2);
new iWeapon = read_data(4)

if(is_user_connected(iAttacker) && iAttacker != iVictim && get_user_weapon(iAttacker) && (iWeapon == CSW_KNIFE) && g_RNum > 1)
client_cmd(0,"spk %s",SOUND);
}

Что не так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 5.1.2014, 4:23
Сообщение #35
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

А ещё, сильно ли опасно делать подрят несколько client_cmd вообще без задержек? Операций над клиентом там прилично. Может для безопасности прописать по одному wait ?
Напомните, пожалуйста, сколько один wait длится. кс-портал как-то писал, вроде про 0.5 или что-то дробное.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 5.1.2014, 4:45
Сообщение #36
Стаж: 12 лет

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

до 15 cmd можно выполнить без проблем. если больше - разделить через task по 10 команд с шагом 10 штук cmd . wait - лучше не использовать


Код:
set_task(0.1,"bla")
set_task(0.2,"bla2")

public bla() {

cmd
cmd
cmd
}

public bla2() {

cmd
cmd
cmd
}


Отредактировал: csnet, - 5.1.2014, 4:46


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 5.1.2014, 11:06
Сообщение #37


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Код:
public Ev_DeathMsg()
{
new iAttacker = read_data(1);
new iVictim = read_data(2);
new iWeapon = read_data(4);

if(is_user_connected(iAttacker) && (iAttacker != iVictim) && (iWeapon == CSW_KNIFE) && (g_RNum > 1))
client_cmd(0,"spk %s",SOUND);
}

1) должны быть правильные отступы и разметка
2) (g_RNum > 1) - я лично не знаю что такое, очевидно номер раунда
3) это вообще не понятно что такое и зачем нужно
if (get_user_weapon(iAttacker))


если iAttacker подключен, и не сам себя убил, и оружие убийства является нож,и g_RNum больше 1


Цитата(exec1337 @ 5.1.2014, 6:23) *
А ещё, сильно ли опасно делать подрят несколько client_cmd вообще без задержек? Операций над клиентом там прилично. Может для безопасности прописать по одному wait ?
Напомните, пожалуйста, сколько один wait длится. кс-портал как-то писал, вроде про 0.5 или что-то дробное.

wait длится в зависимости от процессора и fps
не сильно опасно, тут только эксперименту
лично серверу без разницы сколько выполнить client_cmd
а вот клиенту есть разница
и wait не поможет клиенту ни как
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 5.1.2014, 18:41
Сообщение #38
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(Legenda @ 30.12.2013, 14:23) *
очевидно в плагине ловится событие смерти
Код:

Name: DeathMsg
Structure:
byte KillerID
byte VictimID
byte IsHeadshot
string TruncatedWeaponName

Откуда вот эта информация? Где можно почитать?
Плагин после добавления read_data[4] вообще перестал выполнять свою функцию. Ошибок нет, но и звука тоже нет.

// проверку на раунд пробовал убирать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 5.1.2014, 18:57
Сообщение #39


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

https://wiki.alliedmods.net/Half-Life_1_Gam...#Counter-Strike
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 5.1.2014, 20:16
Сообщение #40


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(exec1337 @ 5.1.2014, 20:41) *
Откуда вот эта информация? Где можно почитать?
Плагин после добавления read_data[4] вообще перестал выполнять свою функцию. Ошибок нет, но и звука тоже нет.

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

значит условие не выполняется
iWeapon == CSW_KNIFE

надо просто посмотреть какое значение может принимать iWeapon = read_data[4]
залогируй и глянь что содержит
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V   1 2 3
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: