AMX MOD X
Суббота, 04.05.2024, 18:25:36



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Вычислить userid игрока с таким-же IP как у HLTV (Ктонибудь поможет?)
Вычислить userid игрока с таким-же IP как у HLTV
He_npeTДата: Понедельник, 14.05.2007, 01:08:59 | Сообщение # 1
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
К примеру - на сервере 1 игрок, который запустил HLTV (IP у них одинаковы ведь)... В общем, мне надо по IP вычеслет userid игрока который запустил HLTV (HLTV userid = ID) (HLTV уже давно находится на сервере и HLTV вынудило определёный event, и теперь надо вычислеть userid запускателя, чтобы сервер на нём провёл какуюнибудь функцию, а если запускатель не находится на сервере то будет проводится другая функция).

Просьба тем, кто смогут помочь, прописав функцию, выделеть userid запускателя, и где писaть формулу если на сервере нету запускателя (HLTV userid = ID). Надеюсь вырозил проблему понятно. =)


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Понедельник, 14.05.2007, 04:59:31
 
VENДата: Понедельник, 14.05.2007, 14:08:23 | Сообщение # 2
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Существует get_user_ip() функция, см. scripting/include/amxmodx.inc.
 
He_npeTДата: Вторник, 15.05.2007, 06:37:40 | Сообщение # 3
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Можешь тогда дать функцию, чтобы вычеслить обсалютно всех игроков по отдельности, пожалуцсто? smile Как и тогда когда довал токо тех кто подключены, но теперь и тех кто подключаются. smile

My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
 
VENДата: Среда, 16.05.2007, 16:47:11 | Сообщение # 4
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Этот подраздел не предназначен для "дать". См. прикрепленную в данном подразделе тему для ознакомления со спецификой и частными правилами.

Суммируя: просить плагины/скрипты здесь не следует.

Здесь задаются и рассматириваются конкретные вопросы.

Я тебе направление указал - ты идти в указанную сторону отказываешься - тему можно закрыть.

Если нет - тогда хзадавай конкретный вопрос. Что конкретно не получается. Не вижу твоих нароботок. На скриптинг тему это не похоже. Пока решил не закрывать дабы дать шанс для выживания.

 
He_npeTДата: Среда, 16.05.2007, 18:02:36 | Сообщение # 5
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Можешь тогда сказать пожалуйсто правильно ли я зделал код в event'e который вызвал hltv. smile
Code

  new hltvip[32]  
  get_user_ip(id, hltvip, 31, 1)
  new launcherid = 0
  for(new i = 1; i <= g_maxplayers; ++i) {
   if(!is_user_connected(i) && !is_user_connecting(i))
   continue
   if(is_user_hltv(i))
   continue
   new launcherip[32]   
   get_user_ip(i, launcherip, 31, 1)
   if(hltvip = launcherip) {
    launcherid = i
   }
  }
  if(launcherid) {
   LauncherDetected(launcherid)
  } else {
   LauncheridNotFound()
  return launcherid

P.S. event'ы LauncherDetected(id) и LauncherNotFound(), я создал и g_maxplayers тоже прописал в plugin_init() чтобы вычеислял maxplayers. smile И ещё 1 вопрос - если я этот код прописал правилно, то не будет ли LauncheridNotFound() event повторятся кучу раз? =Р


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Среда, 16.05.2007, 18:40:26
 
VENДата: Среда, 16.05.2007, 22:35:32 | Сообщение # 6
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Чтобы проверить, одинаковы ли строки, нужно использовать equal или equali функцию. if (x == y) используют для целых и дробных чисел, для строк это неприемлемо. Прототипы вышеуказанных функций смотри в amxmodx\scripting\include\string.inc
Как исправишь лучше приаттачь код, выравнивание у тебя не очень получилось - даже читать такое не хочется.
 
He_npeTДата: Четверг, 17.05.2007, 20:05:41 | Сообщение # 7
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Quote (VEN)
Как исправишь лучше приаттачь код, выравнивание у тебя не очень получилось - даже читать такое не хочется.

приаттачь - Что? wacko

выравнивание у тебя не очень получилось - Я знаю, я ведь сел за скриптинг не давно из-за этого и обращаюсь за помощью, которую надеюсь получить... wink

даже читать такое не хочется - да, я новечёк, но неужеле так обезательно "обос*ать" меня? dry

Из последнего товоего сообшения я получил токо 1 нужную информацию, что надо мне вместо:
Code

if(hltvip = launcherip) {

написать:
Code

if(equali(hltvip, launcherip)) {

Вот весь плугин, в котором я использую этот код.

Прикрепления: 39262813.sma (14.2 Kb)


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Пятница, 18.05.2007, 01:13:00
 
VENДата: Четверг, 17.05.2007, 23:08:51 | Сообщение # 8
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Изначально ты выравнивал данный код с помощью табуляции? Если да, то при вставке такого кода сюда, табуляция преобразовывается в пробелы. Т.е. если ты делаешь отступы одинарной табуляцей, то такой код читать будет здесь крайне сложно, т.к. величина отсутпа будет равна всего одному пробелу. Чтобы решить эту проблему, можно преобразовывать табуляцию в пробелы (некоторые редакторы позволяют сделать это просто), а затем вставлять код сюда. Также можно "приаттачить" код - это значит прикрепить *.sma файл к сообщению.

Зачем нужно выранивание кода? Код имеет иерархическую структуру, поэтому чтобы легко видеть "ветви" следует четко выравнивать код. Хорошо выровненый код легко и удобно читать. Плохо выровненый код мало кто захочет читать из-за неудобства восприятия структуры. Именно поэтому, если участник форума предоставляет код, ему следует позаботиться о выравнивании.

Пример плохо выровненого кода:
Code
if (x)
  y = x
else
  y = z

Пример хорошо выровненого кода:
Code
if (x)
         y = x
else
         y = z


Сообщение отредактировал VEN - Четверг, 17.05.2007, 23:14:58
 
He_npeTДата: Пятница, 18.05.2007, 00:57:24 | Сообщение # 9
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Ой, не так тогда тебя понел... Надеюсь простишь меня за грубость. smile Вроде исправил. Вот приаттачил код. Мне интересто будет ли он теперь дейсвовать, и не будет ли финкция "LauncheridNotFound()" повторятся кучу раз? =Р
Прикрепления: 27147567.txt (0.4 Kb)


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Пятница, 18.05.2007, 00:59:49
 
VENДата: Пятница, 18.05.2007, 12:36:39 | Сообщение # 10
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
В принципе, код выглядит вполне логично. Хотя, можно его немного оптимизировать, но это уже мелочи, и на функциональность они не повлияют.

Насчет выравнивания: почти хорошо. Единственное, следует "continue" сдвигать вправо, т.е. тоже делать отступ.

А вот насчет "кучу раз", я не совсем понял, о чем ты.
Если ты имеешь ввиду твой цикл FOR, то ответ "нет", т.к. LauncheridNotFound() находится за пределами цикла.
Если ты имеешь ввиду каждый раз, когда запускается весь этот код, то ответ "да", в случае, если launcherid равен нулю (т.е. "не найден").

А вот насчет "userid", мне кажется, ты путаешь понятия.
То что ты находишь (launcherid), называется client index. Часто его называют index или просто id.
Userid - это нечто другое, т.н. "сугубо индивидуальный индекс", меняющийся (увеличивающийся) при каждом коннекте. Кстати, его можно вычислить так: get_user_userid(id).

Сообщение отредактировал VEN - Пятница, 18.05.2007, 12:52:41
 
He_npeTДата: Пятница, 18.05.2007, 16:24:58 | Сообщение # 11
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Значет я всё зделал правильно. Спс за помощь. smile

My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Вычислить userid игрока с таким-же IP как у HLTV (Ктонибудь поможет?)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024