Не могу поймать KVD для worldspawn
|
|
slogic | Дата: Среда, 28.02.2007, 13:50:31 | Сообщение # 1 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Код приблизительно такой: Code | #include <amxmodx> #include <amxmisc> #include <fakemeta_stocks> public plugin_precache() { register_forward(FM_KeyValue, "onKeyValue") } public onKeyValue(id, handle) // test { static sKeyName[32] static sKeyVal[512] if(!handle) return FMRES_IGNORED get_kvd(handle, KV_KeyName, sKeyName, sizeof(sKeyName)-1) if(sKeyName[0] == 'w') log_amx("sKeyName = %s", sKeyName) get_kvd(handle, KV_Value, sKeyVal, sizeof(sKeyVal)-1) if(sKeyVal[0]) { if(contain(sKeyVal, ".wad") >= 0) log_amx("%s", sKeyVal) if(contain(sKeyVal, "worldspawn") >= 0) log_amx("%s", sKeyVal) } return FMRES_IGNORED } | Выдается только Code | L 02/28/2007 - 13:49:00: [wad_replacer.amxx] sKeyName = wait L 02/28/2007 - 13:49:00: [wad_replacer.amxx] sKeyName = wait L 02/28/2007 - 13:49:00: [wad_replacer.amxx] sKeyName = wait L 02/28/2007 - 13:49:00: [wad_replacer.amxx] sKeyName = wait | Я смотрел исходники AMX/X. plugin_precache вызывается при самом первом вызове Spawn DLLки. Получается, что он вызывается как раз для worldspawn? Т.е. из AMX/X невозможно перехватить KVD для worldspawn объекта?
|
|
| |
VEN | Дата: Суббота, 03.03.2007, 16:41:04 | Сообщение # 2 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote | Получается, что он вызывается как раз для worldspawn? | Как это понять? Получается, что нельзя...
|
|
| |
slogic | Дата: Суббота, 03.03.2007, 19:50:14 | Сообщение # 3 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (VEN) | Как это понять? | Spawn(id) вызывается всегда же для какого-то объекта. Навреное в этом случае это и есть worldspawn, в котором ключи уже проинициализировалисью Утверждать е буду. Надо кое-что еще проверить.
|
|
| |
VEN | Дата: Воскресенье, 04.03.2007, 11:35:09 | Сообщение # 4 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Т.е., если я правильно понял, ты имел ввиду, что worldspawn спавнится до инициализации amxx? Полагаю, что это так - практика показывает, что даже регистрация pfnKeyValue в plugin_natives не является решением. Кстати, в plugin_precache gpGlobals->time == 1.0 edit: интересно, посредством mm_plugina это решается или нет... edit2: а pfnSpawn для worldspawn все-таки можно перехватить
Сообщение отредактировал VEN - Воскресенье, 04.03.2007, 11:54:28 |
|
| |
VEN | Дата: Воскресенье, 04.03.2007, 12:52:37 | Сообщение # 5 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Итак, решение несколько нестандартное: worldspawn KVD get: Парсинг bsp entities data: http://forums.alliedmods.net/showthread.php?t=51628 worldspawn KVD set: Пуляние KVD в pre pfnSpawn (даже если такая KVD была выпущена ранее, она будет перезаписана - тест с skyname KVD был пройден успешно).
Сообщение отредактировал VEN - Воскресенье, 04.03.2007, 12:59:14 |
|
| |
slogic | Дата: Четверг, 22.03.2007, 13:05:51 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (VEN) | worldspawn KVD set: Пуляние KVD в pre pfnSpawn (даже если такая KVD была выпущена ранее, она будет перезаписана - тест с skyname KVD был пройден успешно). | Мне сказали, что текстуры еще на этапе загрузки карты движком читаются. Конечно, надо будет проверить, чтобы доказать.
|
|
| |
VEN | Дата: Четверг, 22.03.2007, 14:27:40 | Сообщение # 7 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Тесты показывают, что серверное значение "wad" KVD "не влияет на клиента" - при коннекте на сервер он ситывает значение со своего BSP. Поэтому на стороне сервера форсировать клиенту значение "wad" невозможно.
|
|
| |
slogic | Дата: Четверг, 22.03.2007, 15:48:08 | Сообщение # 8 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Ну вот, тем более. А если для listen сервера тоже не применяются, значит этот "кто-то" прав.
|
|
| |