Перейти к содержанию

Functor

Core Developers
  • Постов

    940
  • Зарегистрирован

  • Посещение

  • Победитель дней

    147

Весь контент Functor

  1. Это нормально. - клиент подключается, передает логин и пароль login серверу - login сервер проверяет данные и передает клиенту данные для подключения к char серверу - клиент получает данные и завершает соединение с login сервером - login сервер понимает, что клиент отключился и выводит соответствующее сообщение: Дальше клиент подключается к char серверу.
  2. Functor

    @ctrade

    pc_paycash(sd,amount,0); pc_getcash(pl_sd,amount,0); меняем на: pc_paycash(sd, amount, 0, LOG_TYPE_COMMAND); pc_getcash(pl_sd, amount, 0, LOG_TYPE_COMMAND);
  3. Открываем ../src/map/status.h и после: MD_NOCAST_SKILL = 0x800000, добавляем: MD_NODEMONIC = 0x40000000, // NeoTemple Extra Demonic Mob Это особый режим монстра, который можно прописывать в db/re/mob_db.txt указывая в поле Mode, к примеру, вот так выглядит запись Poring'а: 1002,PORING,Poring,Poring,1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,512,150,619,20,0,0,0,0,4001,1 Если указать этот режим, то моб никогда не будет Демоническим. Пример Poring'а после модификации: 1002,PORING,Poring,Poring,1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x40008083,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,512,150,619,20,0,0,0,0,4001,1
  4. Вы 100% используете тот EXE, который я модифицировал? Если проблема на стороне EXE, то при попытке использовать скилл или произвести удар Вы увидите такие сообщения: Если этих сообщений нету, то проблема, скорее всего, на стороне сервера.
  5. Проверил EXE, который я пропатчил для Вас. Все работает. Возможно Вы допустили ошибку при замене кода. Или не произвели компиляцию.
  6. Так работает или нет ? Вы произвели замену кода в двух местах на сервере ?
  7. Все значения были по указанным мною оффсетам. https://mega.co.nz/#!INtjBDoa!g7d5IjESd3X_dprSiVJzigqF3PdlRKzdZyylRHhUKDs
  8. Причины может быть три: 1. Вы не туда смотрите 2. У Вас не 2013-08-07aRagexe 3. Патчер сдвинул секции в файле Лучше выложите Ваш EXE. Я сам все поправлю. --------------------- Все-таки первая причина. Вы не туда смотрите. Вот нужный байт: 0A 00 85 C0 75 2A 6A 00 6A 00
  9. Это не строки. Это смещения относительно начала файла. 1. Открываем файл в HEX редакторе 2. Нажимаем Ctrl + G 3. Вводим смещение 4. Нажимаем OK и редактор укажет место где необходимо произвести замену 5. Производим редактирование значений 6. Сохраняем изменения Пункты 2-5 необходимо выполнить для всех оффсетов (3F4F5C, 3F4BA2, 3F62B2, 3F48EA).
  10. Опишите более подробно, что Вы делаете и каким образом. С примерами.
  11. Для 2013-08-07aRagexe : оффсет 3F4F5C меняем 75 на EB оффсет 3F4BA2 меняем 75 на EB оффсет 3F62B2 меняем 74 04 85 C0 75 на 90 90 90 90 EB оффсет 3F48EA меняем 0F 84 6E 06 00 00 на 90 90 90 90 90 90 Открываем ../src/map/skill.c и в функции skill_isNotOk меняем: if( &sd->sc && sd->sc.data[SC_ALL_RIDING] ) return true; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe) на: // if( &sd->sc && sd->sc.data[SC_ALL_RIDING] ) // return true; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe) Открываем ../src/map/pc.c и в функции pc_can_attack меняем: sd->sc.data[SC_ALL_RIDING] || // The client doesn't let you, this is to make cheat-safe на: //sd->sc.data[SC_ALL_RIDING] || // The client doesn't let you, this is to make cheat-safe Открываем ../src/map/status.c и в функции status_check_skilluse меняем: if (sc->data[SC_ALL_RIDING]) return false; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe) на: // if (sc->data[SC_ALL_RIDING]) // return false; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe)
  12. Вы дальше не хотите понимать разницу между служебной информацией и данными в пакете... Попытайтесь ответить на все вопросы из моего предыдущего поста и, возможно, Вам станет все понятно.
  13. 100% И что я тут должен был увидеть? Где дамп сетевых пакетов? Как Вы думаете, что делает код, который я привел в пример? Зачем он передает клиенту IP и порты char серверов?
  14. Вы заблуждаетесь. Я говорю про передачу IP серверов не в служебных полях пакета, а в качестве данных. А в разделе данных никакой роутер не имеет права ничего корректировать. WFIFOHEAD(fd,47+32*server_num); WFIFOW(fd,0) = 0x69; WFIFOW(fd,2) = 47+32*server_num; WFIFOL(fd,4) = sd->login_id1; WFIFOL(fd,8) = sd->account_id; WFIFOL(fd,12) = sd->login_id2; WFIFOL(fd,16) = 0; // in old version, that was for ip (not more used) //memcpy(WFIFOP(fd,20), sd->lastlogin, 24); // in old version, that was for name (not more used) memset(WFIFOP(fd,20), 0, 24); WFIFOW(fd,44) = 0; // unknown WFIFOB(fd,46) = sex_str2num(sd->sex); for( i = 0, n = 0; i < ARRAYLENGTH(server); ++i ) { if( !session_isValid(server[i].fd) ) continue; subnet_char_ip = lan_subnetcheck(ip); // Advanced subnet check [LuzZza] WFIFOL(fd,47+n*32) = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip); WFIFOW(fd,47+n*32+4) = ntows(htons(server[i].port)); // [!] LE byte order here [!] memcpy(WFIFOP(fd,47+n*32+6), server[i].name, 20); WFIFOW(fd,47+n*32+26) = server[i].users; WFIFOW(fd,47+n*32+28) = server[i].type; WFIFOW(fd,47+n*32+30) = server[i].new_; n++; } WFIFOSET(fd,47+32*server_num);
  15. Правильно копаем. login сервер после подключения игрока, посылает пакет(0x69) с IP адресами char серверов. По которых и производиться подключение клиентом после выбора сервера. Если не настроить subnet_athena.conf, то в пакетах окажется 192.168.1.100 или 127.0.0.1 И при попытке игрока подключиться по этим IP ничего хорошего не получится.
  16. Попробуйте так: subnet: 255.0.0.0:127.0.0.1:127.0.0.1 subnet: 255.255.255.0:192.168.1.100:192.168.1.100 subnet: 0.0.0.0:188.169.217.8:188.169.217.8
  17. После: subnet: 255.0.0.0:127.0.0.1:127.0.0.1 добавьте: subnet: 0.0.0.0:188.169.217.8:188.169.217.8
  18. Скорее всего, необходимо настроить ../conf/subnet_athena.conf Более подробно смогу сказать только после предоставления инфы. Сервер запущен дома ? Какой внешний IP ? P.S. Сколько еще раз необходимо Вас предупредить, чтобы Вы не создавали несколько постов подряд ?
  19. В файле ../src/map/clif.c меняем код функции clif_cashshop_ack на: В файле ../src/map/clif.c меняем код функции clif_parse_cashshop_buy на:
  20. Да. Также помню, что Вы мне написали в PM и мы там ведем разговор о Вашей проблеме. Скидывайте ссылку на эмуль и EXE в PM. Будет свободное время - посмотрю.
  21. Я правильно прочитал и понял Ваш пост. Количество переменных указал, чтобы показать объем модификации, а не указать на то, что Вы ошиблись c количеством переменных. Модификация является большой, даже если учитывать 2 строчки дополнительного кода на переменную. Но их явно не 2 на переменную. Тут нужно учитывать считывание и запись данных в БД, обнуление и обновление данных, кучу проверок и наличие дополнительного вспомогательного кода. Да и вообще я не понимаю к чему Вы завели разговор о сложности реализации. Речь же шла о предоставлении ссылки на паблик аналог, в качестве подтверждения Ваших слов про сборку паблик скриптов.
  22. Переменных там очень много. Сбор статистики производится в разных участках исходного кода сервера. Это большая модификация Да и дело тут не в сложности реализации. А в том, что нету паблик аналога.
×
×
  • Создать...
Яндекс.Метрика