Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Stealth 6

Kashey
Novice
Novice
Posts: 51
Joined: 29.09.2013 14:47
Location: Одесса

Re: Stealth 6

Post by Kashey »

Через час игры клиент начинает тормозить, а через полтора - играть становится вообще невозможно. Закрыть/Открыть не проблема.
Постоянно запускаю скрипт, который таймит животное пока не затаймит, затем ренеймит и отпускает его.
Много ходит через - NewMoveXY(GetX(TargetAnimal), GetY(TargetAnimal), True, RandomRange(1,4), True);

Информация к сведению, может что-то где-то течет.
BlackSpirit
Neophyte
Neophyte
Posts: 29
Joined: 20.10.2013 11:45

Re: Stealth 6

Post by BlackSpirit »

Vizit0r wrote:BlackSpirit писал(а):
При запуске метода Paralyzed

пишет 'Paralyzed' method not supported on your client version!

Клиент 2.0.3.



Изменил на
'Paralyzed' method not supported - need client version 5+!

надеюсь так понятнее будет
Visit0r, я уже чувствую себя "психопатом, который знает где вы живете" из твоей приписки :mrgreen: Блин, просто обидно. Есть же вроде, какие то очевидные вещи про обратную совместимость и прочее...

Нельзя ли убрать эту надпись и вернуть все как было!

Зачем это все? У меня был универсальный скрипт, который чудесно работал на нескольких шардах. Теперь мне надо ломать голову над тем как профиксить версию клиента и вызывать Paralyzed только на нужной версии. Иначе у меня журнал забит какой-то хренью (по англ. лучше сказать ".. method is not supported...").

Я не могу оттестировать нормально новую версию, потому что это потребует изменения существующих скриптов.

Прям так и хочется, понудеть. Стелс с каждым релизом становиться все менее и менее надежным. Например, 4-я версия каждые примерно 8 часов впадает в состояние когда чар по факту с дисконнектило а стелс думает что все ок, даже Connected возвращает True. Сложный, плавающий баг. Я все тихо надеюсь этим кто-то займется, понимаю, у ребят нет времени, все заняты и т.п. Ну блин, не туда копаете!

Уфф! :cry:
Uus Wis
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

BlackSpirit wrote:Блин, просто обидно. Есть же вроде, какие то очевидные вещи про обратную совместимость и прочее...
есть. есть и неочевидные. и тех, и тех - дохрена. хоть книгу пиши.
BlackSpirit wrote: Нельзя ли убрать эту надпись и вернуть все как было!
можно. а можно как-то иначе обьяснить людям, что не работает это на старых клиентах, ну вот никак не работает?
BlackSpirit wrote: Зачем это все? У меня был универсальный скрипт, который чудесно работал на нескольких шардах. Теперь мне надо ломать голову над тем как профиксить версию клиента и вызывать Paralyzed только на нужной версии. Иначе у меня журнал забит какой-то хренью (по англ. лучше сказать ".. method is not supported...").
универсальный чудесно работающий скрипт, использующий зависимые от версии методы - звучит волшебно, ага.
BlackSpirit wrote: Я не могу оттестировать нормально новую версию, потому что это потребует изменения существующих скриптов.
ну, если ты пишешь универсальные скрипты, но при этом тебе проблема их изменить - увы. Ты бы еще сказал "потребует полного переписывания скриптов", чтобы я еще сильнее осознал свою неправоту.
BlackSpirit wrote: Прям так и хочется, понудеть. Стелс с каждым релизом становиться все менее и менее надежным. Например, 4-я версия каждые примерно 8 часов впадает в состояние когда чар по факту с дисконнектило а стелс думает что все ок, даже Connected возвращает True. Сложный, плавающий баг. Я все тихо надеюсь этим кто-то займется, понимаю, у ребят нет времени, все заняты и т.п. Ну блин, не туда копаете!
меня всегда умиляли такие люди. Скажи мне, а где ты был до сих пор со своим сложным, плавающим багом?
Я понимаю, девелопер телепат, должен снимать информацию о багах напрямую с мозга пользователей. Но все же...
А так, фразы типа "та фигня эта ваша новая версия, в ней до сих пор не пофиксили старый баг" (о котором я слышу первый раз - мне-то о нем сообщать не стоит) - в моем топе, однозначно.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
BlackSpirit
Neophyte
Neophyte
Posts: 29
Joined: 20.10.2013 11:45

Re: Stealth 6

Post by BlackSpirit »

Эх. Виз, не кипятись. Я сразу хочу сказать, что искренним и большим уважением отношусь к тебе и всей команде, работающей над стелсом. Это не очевидно из даты регистрации моего аккаунта, но я давно с проектом, и застал времена когда стелс еще не умел ходить и помню свой восторг, когда он впервые сумел это сделать. Бывали в моем увлечении большие перерывы, по нескольку лет, так, что я выпадал из темы, а потом восстанавливал упущенное. Я когда то был программистом, сейчас уже нет и написание скриптов для меня небольшая отдушина.

Каждый развлекается по своему, я пишу довольно замысловатые скрипты. Тут сложно и не к месту объяснять почему так вышло но в основе моих прикладных скриптов лежит довольно сложная система инклудов, которые перепахивает весь "интерфейс" стелса на мой лад. Буквально почти все действия дополнены или переделаны. Отсюда и жесткая чувствительность к любым изменениям в стелсе. Чтобы не быть голословным я послал тебе этот инклуд в личку, если будет охота посмотри, возможно даже вспомнишь меня, раннюю версию этого тебе как-то присылал. Когда-нибудь я все там документирую и выложу, но не сейчас.

Теперь по существу
1. Ты конечно командир проекта, ты и решаешь, что и куда внедрять. Но очень прошу, не нарушай принцип "бритвы оккама" - не надо улучшать хорошо работающее. И насколько возможно не переделывай уже существующие методы, лучше создавай новые. Посмотри как эвалюционирует любой API - мне близок пример бибилиотек С.
2. Ты спрашиваешь "как сказать?" что что-то не работает в какой-то версии - напиши в справке. В крайнем случае люди надут инфу на форуме. Я хочу привести пример функции, где обыгрывается поведение разных клиентов, но в итоге получается нужный результат. Разница между клиентами намеренно скрывается, чтобы в более сложном скрипте об том не думать:

Code: Select all

function GetSrvName(Id: Cardinal): String;
var _HighJournal : Integer;
begin
  Result := GetCliloc(Id); // Для новых клиентов
  if Result = '' then begin  // Для старых
    Result := GetName(Id);
    if (Result = 'NoName') and (not IsNPC(Id)) then begin
      _HighJournal := HighJournal;
      ClickOnObject(Id);
      while  (_HighJournal = HighJournal) and (Connected or GetArStatus) do Wait(100);
      Result := GetName(Id);
    end;
  end;
end;

2. Я сказал что стелс становиться все менее и менее надежным. Это естественное следствие развития проекта в сторону усложнения. Но дом будет стоять лучше, если постоянно не переделывать фундамент.
3. По поводу бага с диссконнектом ты не справедлив. Во первых я лично тебе докладывал о нем как минимум дважды в асю с периодичностью в пару лет. Во вторых баг очень легко повторить достаточно сделать выдернуть кабель на Connected стелсе с запущенным 1-2 мин скриптом. Виснет почти сразу. Легкой вариацией этого же бага является ситуация когда нестабильно соединение чуть дальше по цепочке, например, на роутере. По втыкай/вытыкай кабель из роутера и в конце концов его добъешься. Другой вариант - нажимай кнопку дисконнект в стелсе - на 5-6-й раз перестанет соединяться с сервером. На мой взгляд любой у кого стелс работает круглые сутки должен этот баг замечать - он просто очевиден. Все это есть и в 6-й версии.
4."та фигня эта ваша новая версия, в ней до сих пор не пофиксили старый баг" - того я не говорил и не подразумевал. Я говорил лишь о том, что ваши усилия направлены в не совсем разумном русле. Эту бы энергию направить на стабильность.

Еще раз повторю, не хочу никого из разработчиков обижать, ни в коем случае! Если это произошло, сразу прошу прощения. Просто старайтесь не отмахиваться от альтернативного мнения и не вешайте ярлыки - это проще всего.
Uus Wis
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

BlackSpirit wrote:2. Я сказал что стелс становиться все менее и менее надежным. Это естественное следствие развития проекта в сторону усложнения. Но дом будет стоять лучше, если постоянно не переделывать фундамент.
иногда дом падает, если фундамент не переделывать. Особенно если он начинает плыть. В случае стелса - это когда невозможно двигаться дальше, из-за того, что имеющаяся платформа становится тормозом. Или когда появляются средства заметно улучшить\ускорить работу.
BlackSpirit wrote:На мой взгляд любой у кого стелс работает круглые сутки должен этот баг замечать - он просто очевиден. Все это есть и в 6-й версии.
а на мой - если бы это была настолько тотальная проблема - то уже давно бы мне все уши прожужжали бы. А раз кроме тебя никто не сообщает - может он не настолько легко повторим?
Посмотри как эвалюционирует любой API - мне близок пример бибилиотек С.
Я в курсе развития библиотек, ОС, и понятия обратная совместимость.
Кроме этого одного несчастного метода еще жалобы на обратную несовместимость есть? Из 400+ методов-то.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Stealth 6

Post by shinma »

вывод : сидите на старой версии или исправляйте скрипты под новую.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
BlackSpirit
Neophyte
Neophyte
Posts: 29
Joined: 20.10.2013 11:45

Re: Stealth 6

Post by BlackSpirit »

BlackSpirit wrote:Кроме этого одного несчастного метода еще жалобы на обратную несовместимость есть? Из 400+ методов-то.
Я подумаю над примерами, они правда есть. Но один мне на память пришел сразу. Есть такая функция StepQ она должна возвращать 256 после успешного открытия двери. Так было до какой-то версии не помню 3 с копейками, потом с 4-й версии перестала возвращать. Казалось бы какая фигня, да? но для меня это проблема, мой скрипт ходит и закрывает за собой двери, не имея такого кода возврата я вынужден лепить костыли и самописно открывать и закрывать двери. А так, я просто брал LastObject.

Мне кажется я тебя нервирую :) Честно, не хочу.
Uus Wis
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

BlackSpirit wrote:. Есть такая функция StepQ она должна возвращать 256 после успешного открытия двери. Так было до какой-то версии не помню 3 с копейками, потом с 4-й версии перестала возвращать. Казалось бы какая фигня, да? но для меня это проблема, мой скрипт ходит и закрывает за собой двери, не имея такого кода возврата я вынужден лепить костыли и самописно открывать и закрывать двери. А так, я просто брал LastObject.
обычное использование недокументированных функций (в данном случае недокументированных возвращаемых значений)

Code: Select all

    //  Если до попытки открыть дверь направление игрока не совпадало с направлением
    //  шага, а после попытки - стало совпадать, значит выходим из StepQ, ибо
    //  чар уже повернулся и нельзя слать лишний запрос на поворот.
    if (Direction = TCharacter(CharObj).PlayerDirection) and dirFlag then
      Exit(256);  // типа повернулись без шага
читаем документацию (http://stealth.od.ua/Doc:RU/Api/S#StepQ):
Возвращает следующие значения:

0-255 - Запрос на шаг отправлен
256 - Была предпринята попытка открыть дверь, и чар развернулся в нужном направлении.
ни слова про ТОЛЬКО успешное открытие - открытие+поворот.

давай следующую попытку.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
newuser
Neophyte
Neophyte
Posts: 12
Joined: 13.07.2013 11:27

Re: Stealth 6

Post by newuser »

my char runs, slower then other players, they always passes me and in pvp kills me :)
Kashey
Novice
Novice
Posts: 51
Joined: 29.09.2013 14:47
Location: Одесса

Re: Stealth 6

Post by Kashey »

Столкнулся с ситуацией когда FindType (возможно и другие ф-ии поиска) находит уже не существующие объекты.
И в клиенте стелса на вкладке World - они присутствуют, но реально в игре их уже нету.
Таймлю животное, переименовываю в xxx, убиваю.
По дебагу FindType-а он всегда находит ObjectID старого убитого час назад животного от которого даже трупа не осталось.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

Kashey wrote:Изменился метод работы MobileCanBeRenamed() ?
нет
Kashey wrote:В предыдущих версиях возвращало true, если животное может быть переименовано в принципе. Но перед переименовыванием нужно было сделать RequestStats().
сейчас так же.
Kashey wrote:Сейчас стало возвращать false. True возвращает только в случае когда уже вытянут статус с объекта и есть поле чтобы переименовывать.
ну так как бы логично - пока не пришла инфа о статах (там среди них как раз нужное поле) - инфы про вохможность переименовать нет.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
BlackSpirit
Neophyte
Neophyte
Posts: 29
Joined: 20.10.2013 11:45

Re: Stealth 6

Post by BlackSpirit »

Vizit0r wrote: обычное использование недокументированных функций (в данном случае недокументированных возвращаемых значений)
Таким способом ты, конечно, любому еврею докажешь, что он негр :) По честности сказать, у нас все не документировано. Обычно ты просто даешь на форуме небольшой комментарий, а дальше действует метод "научного тыка", для познания, по факту, что и как работает.

Но, конкретно в этом случае, скорее, имеет место некорректное документирование.
Vizit0r wrote:
256 - Была предпринята попытка открыть дверь, и чар развернулся в нужном направлении.
ни слова про ТОЛЬКО успешное открытие - открытие+поворот.
Я, как раз, ни слова не вижу про то, что ЕСЛИ чар повернут в ненадлежащем направлении, то так мол и так. А вижу, что по нормам Русского языка описаны 2 разных действия, разделенных запятой. Действие первое: Предпринята попытка открыть дверь. Действие второе: чар развернулся в нужном направлении. Каком, таком "нужном"? Понимаю это как указание на факт, что при юзе объекта на земле сервер может развернуть чара в направлении объекта - т.е. "нужном для юза" направлении. Поскольку, по началу, все так и происходило, это казалось логичным.
Vizit0r wrote: давай следующую попытку.
Ок. IsWorldCellPassable - в нем (не помню уже когда) взяли, да и поменяли местами два аргумента (не соврать это были вроде Z и WorldNum).

П.С.
Сори за офф-топик, но выскажу пожелание. Если можно введи глобальную переменную, допустим LastDoor. Если StepQ по факту открыл дверь, переменную заполняем идентификатором двери, если вызов StepQ дверь не открыл, то LastDoor обнуляется. В такой ситуации не пострадает текущий API, а важная для меня (и может быть еще для кого-то) примочка появиться. И будет пофиг, возвращает ли StepQ значение 256.

И еще, удалось ли принять к рассмотрению баг с дисконнектами, или мое сообщение пока не рассматривается как достоверное?
Uus Wis
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

софистикой заниматься лень.

Ок. IsWorldCellPassable - в нем (не помню уже когда) взяли, да и поменяли местами два аргумента (не соврать это были вроде Z и WorldNum).
а я помню. во времена тестовой версии, не после релиза. и да, именно для этого и есть тестовые версии.

LastStepQUsedDoor добавлю.
И еще, удалось ли принять к рассмотрению баг с дисконнектами, или мое сообщение пока не рассматривается как достоверное?
из трех девелоперов хоть сколько-нибудь часто повторить его может только один, и только на виртуалке. Ему и искать причину. Впрочем, лично я уверен на 99%, что ничего он не найдет.
Когда у меня в очередной раз обрывается интернет, зачастую (раз в пару дней точно) qip остается "онлайн" до тех пор, пока я не отсылаю кому-то сообщение, а после - моментально Connect failed. Но при этом у меня не возникает мысли писать сообщения SubZero, или как там его, в стиле "почини этот глупый баг, он мешает мне жить уже пять лет". Потому что высокоуровневые приложения - это одно, а TCP\IP протокол в винде - это совсем другое. И приколы второго починить в первом - почти нереально. Почти - потому что иногда костылями получается обойти, но крайне редко.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

Vizit0r wrote:из трех девелоперов хоть сколько-нибудь часто повторить его может только один, и только на виртуалке.
orich (01:58:35 23/10/2013)
nothing. Worked perfect
orich (01:58:39 23/10/2013)
first test, i think i didnt wait long enough for disconnect
orich (01:58:43 23/10/2013)
did 10 more tests after, all perfect
orich (01:58:47 23/10/2013)
cant recreate
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

Kashey wrote:Столкнулся с ситуацией когда FindType (возможно и другие ф-ии поиска) находит уже не существующие объекты.
И в клиенте стелса на вкладке World - они присутствуют, но реально в игре их уже нету.
Таймлю животное, переименовываю в xxx, убиваю.
По дебагу FindType-а он всегда находит ObjectID старого убитого час назад животного от которого даже трупа не осталось.
с вкладкой World - был баг с неисчезанием удаленного обьекта, исправил.
Через findtype "призрак" не находится, и не находился. Если можешь повторить - пиши в асю (в прошлый раз так до моей аси и не дошел с каким-то багом :))
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply