|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Как грамотно сменить ник, при попытке юзера сменить ник ?
|
|
Koka | Дата: Среда, 17.06.2009, 16:54:01 | Сообщение # 1 |
Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| с помощью этого: register_forward(FM_ClientUserInfoChanged, "fwd_FM_ClientUserInfoChanged") подскажите код плз, срочно надо
стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
|
|
| |
pike | Дата: Среда, 17.06.2009, 17:16:33 | Сообщение # 2 |
Полковник
Группа: Пользователи
Сообщений: 207
Статус: Не в сети
| Code public fwClientUserInfoChanged(id, buffer) { if (!is_user_connected(id)) return FMRES_IGNORED
static name[32], val[32] get_user_name(id, name, sizeof name - 1) engfunc(EngFunc_InfoKeyValue, buffer, g_name, val, sizeof val - 1) if (equal(val, name)) return FMRES_IGNORED
engfunc(EngFunc_SetClientKeyValue, id, buffer, g_name, name) client_cmd(id, g_clcmd_template, name, name) client_print(id, print_chat, "%s", g_reason)
return FMRES_SUPERCEDE }
|
|
| |
Koka | Дата: Среда, 17.06.2009, 18:36:38 | Сообщение # 3 |
Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| спасибо еще вопросики: 1) что это g_clcmd_template? неужели "name %s", или "setinfo name %s"??, если одно из этих двух - то это мне кажется будет overflow, т.к. такая установка ника находится в самом форварде, где и перехватывается! 2) что качественнее (в плане узнавания настоящего ника): get_user_name(id, name, 31) pev(id, pev_netname, name, 31) get_user_info(id, "name", name, 31) ?
стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
Сообщение отредактировал Koka - Среда, 17.06.2009, 18:46:20 |
|
| |
pike | Дата: Среда, 17.06.2009, 18:47:13 | Сообщение # 4 |
Полковник
Группа: Пользователи
Сообщений: 207
Статус: Не в сети
| Quote (Koka) что это g_clcmd_template, неужели client_cmd(id, "name %s", name) Code new const g_clcmd_template[] = "name ^"%s^"; setinfo name ^"%s^""
|
|
| |
Koka | Дата: Среда, 17.06.2009, 18:58:11 | Сообщение # 5 |
Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| я там обновил пост с вопросиком (мб неуспел заметить)) Добавлено (2009-06-17, 6:58 Pm) --------------------------------------------- мне прост кажется что одного engfunc(EngFunc_SetClientKeyValue, id, buffer, g_name, name) будет достаточно. а чтобы сообщение появилось типа игрок сменил ник можно это вставить message_begin(MSG_BROADCAST, get_user_msgid("SayText")) write_byte(id) write_string("#Cstrike_Name_Change") write_string(name) write_string(val) message_end() ну естествено с оптимизацией.. а вот как можно сменить ник игрока (кроме client_cmd), чтобы он сохранился навсегда (имею ввиду, пока он сам его не сменит) ?
стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
|
|
| |
pike | Дата: Среда, 17.06.2009, 18:58:54 | Сообщение # 6 |
Полковник
Группа: Пользователи
Сообщений: 207
Статус: Не в сети
| Quote (Koka) мне кажется будет overflow не будет
|
|
| |
Koka | Дата: Среда, 17.06.2009, 19:34:36 | Сообщение # 7 |
Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| небудет но вызываться будет дважды
стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...
|
|
| |
Zefir | Дата: Четверг, 18.06.2009, 13:30:10 | Сообщение # 8 |
Майор
Группа: Пользователи
Сообщений: 83
Статус: Не в сети
| Я у себя выставлял флаг игроку, что сейчас я буду переименовывать его и первый вызов форвард функции надо проигнорировать.... И кстати я старался избавиться от сообщения в чат, потому заюзал FakeMeta, а не просто client_infochange, как было по началу. А по поводу команд, то предпочитаю такую последовательность: Code client_cmd(id, "name ^"%s^"", name) set_user_info(id, "name", name) Добавлено (2009-06-18, 1:30 Pm) --------------------------------------------- По поводу узнавания ника, то я тоже столкнулся с ситуацией, что get_user_name(id, name, 31) возвращает пустую строку. Потому написал свою функцию, которая если ник пустой вызывает get_user_info(id, "name", name, 31), и уже его и возвращает. Про pev(id, pev_netname, name, 31) не скажу ничего. не использовал, мне хватает двух других.
Чтобы правильно задать вопрос, нужно знать больше половины ответа... Cerberus(Цербер) - начато публичное тестирование Энциклопедия Counter-Strike
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |