@main / или как подружить кору с этим чатом [решено]
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Стандартная еА держит эту команду. Так что проблемы c отладкой и с русским в WPE - это не проблемы. Вот пример понаглядней (герой почти везде "произносит" один символ - восклицательный знак):
@main-чат:
Btw:
* * *
Хм! У этих еА-шников x8D пакет засылается из разных место одинаковыми процедурами. Ню-ню.. :
@main-чат:
Обычный публичный чат:Код: Выделить всё
1 127.0.0.1:1233 127.0.0.1:5121 22 Send 0000 F3 00 16 00 56 41 53 49 4C 49 59 20 3A 20 40 6D ....VASILIY : @m 0010 61 69 6E 20 21 00 ain !. 2 127.0.0.1:5121 127.0.0.1:1233 24 Recv 0000 8D 00 18 00 00 00 00 00 4D 61 69 6E 40 56 41 53 ........Main@VAS 0010 49 4C 49 59 3A 20 21 00 ILIY: !.
свои собственные слова:Код: Выделить всё
1 127.0.0.1:5121 127.0.0.1:4664 23 RecvFrom 0000 8D 00 17 00 83 84 1E 00 50 6F 74 74 65 72 20 3A ........Potter : 0010 20 68 65 6C 6C 6F 00 hello.
админский /b-чат (желтый)Код: Выделить всё
1 127.0.0.1:1233 127.0.0.1:5121 16 Send 0000 F3 00 10 00 56 41 53 49 4C 49 59 20 3A 20 21 00 ....VASILIY : !. 2 127.0.0.1:5121 127.0.0.1:1233 16 Recv 0000 8E 00 10 00 56 41 53 49 4C 49 59 20 3A 20 21 00 ....VASILIY : !.
админский /bb-чат (голубой)Код: Выделить всё
1 127.0.0.1:1233 127.0.0.1:5121 15 Send 0000 99 00 0F 00 56 41 53 49 4C 49 59 3A 20 21 00 ....VASILIY: !. 2 127.0.0.1:5121 127.0.0.1:1233 15 Recv 0000 9A 00 0F 00 56 41 53 49 4C 49 59 3A 20 21 00 ....VASILIY: !.
зеленый системный чат, фрагментКод: Выделить всё
1 127.0.0.1:1233 127.0.0.1:5121 10 Send 0000 99 00 0A 00 62 6C 75 65 21 00 ....blue!. 2 127.0.0.1:5121 127.0.0.1:1233 10 Recv 0000 9A 00 0A 00 62 6C 75 65 21 00 ....blue!.
приватный чат, пм:Код: Выделить всё
3 127.0.0.1:1233 127.0.0.1:5121 20 Send 0000 F3 00 14 00 56 41 53 49 4C 49 59 20 3A 20 40 68 ....VASILIY : @h 0010 65 6C 70 00 elp. 4 127.0.0.1:5121 127.0.0.1:1233 2048 Recv 0000 8E 00 13 00 48 65 6C 70 20 63 6F 6D 6D 61 6E 64 ....Help command 0010 73 3A 00 8E 00 5A 00 54 6F 20 75 73 65 20 6F 6E s:...Z.To use on 0020 65 20 63 6F 6D 6D 61 6E 64 2C 20 74 79 70 65 20 e command, type 0030 69 74 20 69 6E 73 69 64 65 20 74 68 65 20 6D 65 it inside the me 0040 73 73 61 67 65 20 77 69 6E 64 6F 77 20 77 68 65 ssage window whe ...
* * *Код: Выделить всё
1 127.0.0.1:5121 127.0.0.1:1233 30 Recv 0000 97 00 1E 00 50 6F 74 74 65 72 00 00 00 00 00 00 ....Potter...... 0010 00 00 00 00 00 00 00 00 00 00 00 00 21 00 ............!.
Btw:
и2005/12/26
...
* Implemented main chat (global chat channel). Usage: @main <on|off>, @main <message>. [LuzZza]
А вот этого я что-то вообще не вижу:2006/01/22
...
* Some changes of @main. Now you can send main-chat messages by sending whisper
to nick "Main" (or any other, it can be set in inter_athena.conf).[LuzZza]
Афтар, оно что, каким-то особенным цветом отображается? У меня обычным белым пишет.Код: Выделить всё
sprintf(atcmd_output, msg_txt(386), sd->status.name, message); // I use 0xFE000000 color for signalizing that this message is // main chat message. 0xFE000000 is invalid color, same using // 0xFF000000 for simple (not colored) GM messages. [LuzZza] intif_announce(atcmd_output, strlen(atcmd_output) + 1, 0xFE000000, 0);
* * *
* * *R 008c <len>.w <str>.?B
’КЏн”Њѕ‘—ђMЃBѓ`ѓѓѓbѓg’†‚Нѓ`ѓѓѓbѓg“а”Њѕ—p‚Й‚И‚й
send normal speech. it become a speech for chat during a chat
ђж“Є‚М"<nick> : "‚М•”•Є‚НѓNѓ‰ѓCѓAѓ“ѓg‘¤‚Е•t‚Ї‚йЋ–
client adds "<nick> : " part.
R 008d <len>.w <ID>.l <str>.?B
ID‚і‚с‚М”ЊѕЋуђMЃBѓ`ѓѓѓbѓg’†‚Нѓ`ѓѓѓbѓg“а”Њѕ—p‚Й‚И‚й
receive a speech by ID. it become speech for chat during a chat
R 008e <len>.w <str>.?B
Ћ©•Є‚М”ЊѕЋуђMЃBѓ`ѓѓѓbѓg’†‚Нѓ`ѓѓѓbѓg“а”Њѕ—p‚Й‚И‚й
receive my character's speech. it become speech for chat during a chat
...
R 0097 <len>.w <nick>.24B <message>.?B
wisЋуђM
receive wisper
...
R 009a <len>.w <message>.?B
GM‚©‚з‚М“V‚Мђє
GM announce
Хм! У этих еА-шников x8D пакет засылается из разных место одинаковыми процедурами. Ню-ню.. :
В одном месте есть интересное замечание - "Works like 'announce' but outputs in the common chat window".Код: Выделить всё
int clif_message(struct block_list *bl, const char* msg) { unsigned short msg_len = strlen(msg) + 1; unsigned char buf[256]; nullpo_retr(0, bl); WBUFW(buf, 0) = 0x8d; WBUFW(buf, 2) = msg_len + 8; WBUFL(buf, 4) = bl->id; memcpy(WBUFP(buf, 8), msg, msg_len); clif_send(buf, WBUFW(buf,2), bl, AREA_CHAT_WOC); // by Gengar return 0; }
Последний раз редактировалось piroJOKE Пт май 04, 2007 3:17 pm, всего редактировалось 11 раз.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
А вот кое-что про это на форуме ОпенКоры:
http://forums.openkore.com/viewtopic.php?t=28736 ("@main chat")
(Типо, у нас всё работает, это вы чо-та там не включили!).
* * *
Ого, у меня еще веселее:
Тут ничего интересного, это мы уже видели:
http://forums.openkore.com/viewtopic.php?t=28736 ("@main chat")
(Типо, у нас всё работает, это вы чо-та там не включили!).
* * *
Ого, у меня еще веселее:
И чего они этим хотели сказать? Строка №152:c @main
Main chat is currently disabled. Usage: @main <on|off>, @main <message>.
c @main on
Main chat has been activated.
(---- здесь я засылаю чат, и... ----)
This program has encountered an unexpected problem. This is probably because
of a bug in this program. Please tell us about this problem.
The error message is:
Can't call method "name" on an undefined value at
C:/........../194SVN5597-local/plugins/alertsound.pl line 152.
A more detailed error report is saved to errors.txt. Please include the
contents of this file in your report, or we may not be able to help you!
Press ENTER to exit this program.
* * *if (Utils::existsInList($config{"alertSound_".$i."_eventList"}, $event)
Тут ничего интересного, это мы уже видели:
Заслал это на форум OpenKore, чоб было.Connecting to Map Server...
Connecting (127.0.0.1:5121)... connected
Requesting guild information...
You are now in the game
Your Coordinates: 53, 91
eAthena SVN version: Unknown
Welcome to eAthena SVN Version! Enjoy! Please report any bugs you find in
eAthena :).
c @main
Main chat is currently disabled. Usage: @main <on|off>, @main <message>.
c @main on
Main chat has been activated.
c @main hello world
[dist=unknown] ():
Последний раз редактировалось piroJOKE Чт май 03, 2007 4:03 pm, всего редактировалось 2 раза.
- Xmpe
- Бывалый
- Сообщения: 751
- Зарегистрирован: Вт ноя 14, 2006 10:12 pm
- Discord: Xmpe#6813
- Контактная информация:
кстати ещё заметил багу, но ето уже не к мейну но раз речь о чатах
на русро гоняю в xkore 1
пишу с клиента общаюсь
пока немогу сказать с какого момента начинаеться
но кора начинает отставать на 2 мессаги
Далее пишу Коле, который оффлайн,
в коре "Вася из нот онлайн"
Пишу Саше ещё привет в коре вылезает
"To Коля: привет"
При релогине бага пропадает
на русро гоняю в xkore 1
пишу с клиента общаюсь
пока немогу сказать с какого момента начинаеться
но кора начинает отставать на 2 мессаги
когда я пишу третью в коре отображаеться токо первая и заноситься в лог1) pm Вася приват
2) pm Вася как дела ?
3) pm неподскажешь бла бла бла
Далее пишу Коле, который оффлайн,
в коре "Вася из нот онлайн"
Пишу Саше ещё привет в коре вылезает
"To Коля: привет"
При релогине бага пропадает
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Визуализировал процедуру KM'а, чоб было понятно, что вообще происходит. (Я еще не пробовал ее, просто посмотрел, ЧТО сделал КМ).
Код: Выделить всё
sub public_chat { my ($self, $args) = @_; # Type: String my $message = bytesToString($args->{message}); my ($chatMsgUser, $chatMsg); # Type: String ($chatMsgUser, $chatMsg) = $message =~ /(.*?) : (.*)/; $chatMsgUser =~ s/ $//; stripLanguageCode(\$chatMsg); + if ($args->{ID} > 0) { my $actor = Actor::get($args->{ID}); my $dist = "unknown"; if (!$actor->isa('Actor::Unknown')) { $dist = distance($char->{pos_to}, $actor->{pos_to}); $dist = sprintf("%.1f", $dist) if ($dist =~ /\./); } $message = "$chatMsgUser ($actor->{binID}): $chatMsg"; # this code autovivifies $actor->{pos_to} but it doesnt matter chatLog("c", "[$field{name} $char->{pos_to}{x}, $char->{pos_to}{y}] [$actor->{pos_to}{x}, $actor->{pos_to}{y}] [dist=$dist] ($actor->{nameID})" . "$message\n") if ($config{logChat}); message TF("[dist=%s] %s\n", $dist, $message), "publicchat"; + } else { + chatLog("c", "\@main [$field{name}] " . + "$message\n") if ($config{logChat}); + $message = "$chatMsgUser (@main): $chatMsg"; + } ChatQueue::add('c', $args->{ID}, $chatMsgUser, $chatMsg); Plugins::callHook('packet_pubMsg', { pubID => $args->{ID}, pubMsgUser => $chatMsgUser, pubMsg => $chatMsg, MsgUser => $chatMsgUser, Msg => $chatMsg }); }
piroJOKE
Поясню что Я зделал. Заметил что в теле тех сообщений ИД == 00 00 00 00. Соответвенно добавил условие на проверку ИД, и если ИД == 0 то пишем обычную мессагу в чатлог. Только вот забыл что должно быть так (ибо сначала формируем мессагу, потом выводим):
+ $message = "$chatMsgUser (@main): $chatMsg";
+ chatLog("c", "\@main [$field{name}] " .
+ "$message\n") if ($config{logChat});
Поясню что Я зделал. Заметил что в теле тех сообщений ИД == 00 00 00 00. Соответвенно добавил условие на проверку ИД, и если ИД == 0 то пишем обычную мессагу в чатлог. Только вот забыл что должно быть так (ибо сначала формируем мессагу, потом выводим):
+ $message = "$chatMsgUser (@main): $chatMsg";
+ chatLog("c", "\@main [$field{name}] " .
+ "$message\n") if ($config{logChat});
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
После того, как я расставил "плюсики", я уже все понял. Это - для остальных юзеров. Кстати, это нифига не работает. Примерно такое выходит:
c @main hello
[dist=unknown] (@main):
* * *
Я не уверен, но по-моему проблема где-то здесь:
c @main hello
[dist=unknown] (@main):
* * *
Я не уверен, но по-моему проблема где-то здесь:
Походу, текст сообщения попадает куда-то "не туда". Строго говоря, тут вообще регэкспы не в тему (имхо): все поля заголовка имеют фиксированный размер!($chatMsgUser, $chatMsg) = $message =~ /(.*?) : (.*)/;
- Xmpe
- Бывалый
- Сообщения: 751
- Зарегистрирован: Вт ноя 14, 2006 10:12 pm
- Discord: Xmpe#6813
- Контактная информация:
Затестил то что написал км, теперь в консоли ничего непишеться
только алертсаунд орёт.
з.ы. открыл лог, в нём всё норм
[May 3 17:42:32 2007][C] @main [***_***0*] Main@Xmpe: блаблабла
только алертсаунд орёт.
з.ы. открыл лог, в нём всё норм
[May 3 17:42:32 2007][C] @main [***_***0*] Main@Xmpe: блаблабла
Последний раз редактировалось Xmpe Чт май 03, 2007 4:47 pm, всего редактировалось 1 раз.