Вычислить userid игрока с таким-же IP как у HLTV
|
|
He_npeT | Дата: Понедельник, 14.05.2007, 01:08:59 | Сообщение # 1 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| К примеру - на сервере 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
Статус: Не в сети
| Существует get_user_ip() функция, см. scripting/include/amxmodx.inc.
|
|
| |
He_npeT | Дата: Вторник, 15.05.2007, 06:37:40 | Сообщение # 3 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Можешь тогда дать функцию, чтобы вычеслить обсалютно всех игроков по отдельности, пожалуцсто? Как и тогда когда довал токо тех кто подключены, но теперь и тех кто подключаются.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |
VEN | Дата: Среда, 16.05.2007, 16:47:11 | Сообщение # 4 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Этот подраздел не предназначен для "дать". См. прикрепленную в данном подразделе тему для ознакомления со спецификой и частными правилами. Суммируя: просить плагины/скрипты здесь не следует. Здесь задаются и рассматириваются конкретные вопросы. Я тебе направление указал - ты идти в указанную сторону отказываешься - тему можно закрыть. Если нет - тогда хзадавай конкретный вопрос. Что конкретно не получается. Не вижу твоих нароботок. На скриптинг тему это не похоже. Пока решил не закрывать дабы дать шанс для выживания.
|
|
| |
He_npeT | Дата: Среда, 16.05.2007, 18:02:36 | Сообщение # 5 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Можешь тогда сказать пожалуйсто правильно ли я зделал код в event'e который вызвал hltv. 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. И ещё 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
Статус: Не в сети
| Чтобы проверить, одинаковы ли строки, нужно использовать equal или equali функцию. if (x == y) используют для целых и дробных чисел, для строк это неприемлемо. Прототипы вышеуказанных функций смотри в amxmodx\scripting\include\string.inc Как исправишь лучше приаттачь код, выравнивание у тебя не очень получилось - даже читать такое не хочется.
|
|
| |
He_npeT | Дата: Четверг, 17.05.2007, 20:05:41 | Сообщение # 7 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Quote (VEN) | Как исправишь лучше приаттачь код, выравнивание у тебя не очень получилось - даже читать такое не хочется. | приаттачь - Что? выравнивание у тебя не очень получилось - Я знаю, я ведь сел за скриптинг не давно из-за этого и обращаюсь за помощью, которую надеюсь получить... даже читать такое не хочется - да, я новечёк, но неужеле так обезательно "обос*ать" меня? Из последнего товоего сообшения я получил токо 1 нужную информацию, что надо мне вместо: Code | if(hltvip = launcherip) { | написать: Code | if(equali(hltvip, launcherip)) { | Вот весь плугин, в котором я использую этот код.
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
Статус: Не в сети
| Изначально ты выравнивал данный код с помощью табуляции? Если да, то при вставке такого кода сюда, табуляция преобразовывается в пробелы. Т.е. если ты делаешь отступы одинарной табуляцей, то такой код читать будет здесь крайне сложно, т.к. величина отсутпа будет равна всего одному пробелу. Чтобы решить эту проблему, можно преобразовывать табуляцию в пробелы (некоторые редакторы позволяют сделать это просто), а затем вставлять код сюда. Также можно "приаттачить" код - это значит прикрепить *.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
Статус: Не в сети
| Ой, не так тогда тебя понел... Надеюсь простишь меня за грубость. Вроде исправил. Вот приаттачил код. Мне интересто будет ли он теперь дейсвовать, и не будет ли финкция "LauncheridNotFound()" повторятся кучу раз? =Р
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
Статус: Не в сети
| В принципе, код выглядит вполне логично. Хотя, можно его немного оптимизировать, но это уже мелочи, и на функциональность они не повлияют. Насчет выравнивания: почти хорошо. Единственное, следует "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
Статус: Не в сети
| Значет я всё зделал правильно. Спс за помощь.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |