IPB

Здравствуйте Гость ( Вход | Регистрация )

2 страницы V  1 2 >  
Reply to this topicStart new topic
> Баг с невидимостью
Stratus
May 3 2005, 16:41
Отправлено #1


Begemoth
Group Icon

Группа: Members
Сообщений: 1 136
Регистрация: 26-November 03
Пользователь №: 764



техи кривые или клиент? :)

ну и что будем делать?


Присоединённые изображения
Присоединённое изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VEXOR
May 3 2005, 16:47
Отправлено #2


Megadestroyer
Group Icon

Группа: Members
Сообщений: 307
Регистрация: 21-July 03
Пользователь №: 696



Это баг в клиенте,это болезнь,а приходит она туда где есть верфы с ПНsmile.gif На Московском уже все переболели этим,и там выработан иммунитет ,удаление рассы замеченной в использование бага.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Stratus
May 3 2005, 18:03
Отправлено #3


Begemoth
Group Icon

Группа: Members
Сообщений: 1 136
Регистрация: 26-November 03
Пользователь №: 764



на мой взгляд суть проблемы в длинне переменной под CU - 4 байта, причем знаковой!

если для верфа величина CU 11169900, то для стэка уже 2848324500... по моему гимор начинается при величине CU около 2147483647

думаю верфы тут не причем, полагаю что данный глюк можно сообразить и с парой стэков скрывалок на джамбах... я не проверял, но могу и проверить на желающих wink.gif

возможно глюк легко вылечить заменой типа под переменной под массу и CU с long на unsigned long (или long long wink.gif )
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VINIAMIN[PUH]
May 3 2005, 18:57
Отправлено #4


Незарегистрированный









QUOTE(VEXOR @ May 3 2005, 10:47 PM)
Это баг в клиенте,это болезнь,а приходит она туда где есть верфы с ПНsmile.gif На Московском уже все переболели этим,и там выработан иммунитет ,удаление рассы замеченной в использование бага.


так это баг в клиенте. или на сервере..
вроде как говорилось что в 17-ом сервере это пофиксили...
а если в клиенте. то за что бан? все равно тебя должны видеть как 98
Go to the top of the page
+Quote Post
Alex
May 3 2005, 19:01
Отправлено #5


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



Удаление расы - это конечно выход, но хотелось бы победить причину.
Начал копать исходники, что-то сразу не вижу, где:
CODE

static struct TCloakTable{
 float u,c;
}CloakTable[]={
 {0   ,0},
 {100 ,50},
 {300 ,75},
 {600 ,87.5},
 {1000,93.75},
 {1300,98},
};
SBYTE TBaseTechnology::CU2Cloak(float CUnits){
 const int    Counter = sizeof(CloakTable)/sizeof(TCloakTable);
 float X1,K1,X2,K2,Xi = min(CUnits,CloakTable[Counter-1].u);
 for(int idx=1;idx<Counter;idx++){
   if(Xi<=CloakTable[idx].u) break;
 }
 X1 = CloakTable[idx-1].u;
 K1 = CloakTable[idx-1].c;
 X2 = CloakTable[idx  ].u;
 K2 = CloakTable[idx  ].c;
 return SBYTE((Xi-X1)/(X2-X1)*(K2-K1)+K1);
}



SBYTE TFleet::Cloak()const{
 const TPlayer *pOwner = TPlayers::This->GetPlayer(m_IdOwner);
 float TotalUnits = 0;
 for(BYTE s=0;s<m_nShips;s++){
   const TShip& Ship = m_dShips[s];
   const TDesignItem *pDesign = pOwner->Design(Ship.m_IdDesign);
   TotalUnits+=pDesign->m_CloakUnit*(pDesign->m_Mass*Ship.m_Counter);
 }
 if(pOwner->m_Advantage&eADV::m_Flags[eADV::AdvancedCloaking])
   return TBaseTechnology::CU2Cloak(TotalUnits/EmptyMass());
 else
   return TBaseTechnology::CU2Cloak(TotalUnits/Mass());
}


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 3 2005, 19:14
Отправлено #6


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



QUOTE(Stratus @ May 3 2005, 07:41 PM)
техи кривые или клиент? smile.gif

А у тебя какой клиент?

В 17 сервере вроде нет фиксов невидимости в описании.


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Бешеные Мишки
May 3 2005, 19:26
Отправлено #7


Cannon Boat
Group Icon

Группа: Members
Сообщений: 42
Регистрация: 5-October 04
Пользователь №: 949



технократ говорит что в 1 ли от планеты висит флот 107% невидимости, а я его не вижу : (

что считаеться читом ? использование скрывалок верфов или скрывалок вообще ?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 3 2005, 19:39
Отправлено #8


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



QUOTE(Бешеные Мишки @ May 3 2005, 10:26 PM)
технократ говорит что в 1 ли от планеты висит флот 107% невидимости, а я его не вижу : (

что считаеться читом ? использование скрывалок верфов или скрывалок вообще ?

Пока еще не ясно есть ли баг или нет.

Пока считаем чит - это флот с огромным количеством скрывалок, чей CU приводит к переполнению чего-то.


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 3 2005, 19:52
Отправлено #9


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



Нашел long - это масса флота, скока твой весил?
Но процент все равно не может быть больше 98 !
В общем мне нужен такой флот, кто подарит? Ну или ДУ дайте, если флот жалко wink.gif


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Stratus
May 3 2005, 20:24
Отправлено #10


Begemoth
Group Icon

Группа: Members
Сообщений: 1 136
Регистрация: 26-November 03
Пользователь №: 764



а где дефайны на SBYTE и BYTE?

205 верфов по 985кт + 125 джамб по 528кт + еще 1 на 580 кт итого все это 107%

клиент 1.01.01.07.


TotalUnits = 205 * (985 * 21 * 580) = 205 * 1116990 = 2289829500
EmptyMass = 205 * 985 + 580 + 528 * 125 = 268505
CUnits = 852,80534813131971471667194279436


а вот эта строчка мне непонятно чего дает :
const int Counter = sizeof(CloakTable)/sizeof(TCloakTable);

Сообщение отредактировал Stratus - May 3 2005, 22:54
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VEXOR
May 3 2005, 23:10
Отправлено #11


Megadestroyer
Group Icon

Группа: Members
Сообщений: 307
Регистрация: 21-July 03
Пользователь №: 696



Эта тема уже обсуждалась.Если кому интересно то>
http://forum.real4x.info/index.php?act=ST&...5&t=1969&st=195
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 4 2005, 05:19
Отправлено #12


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



QUOTE(Stratus @ May 3 2005, 11:24 PM)
а где дефайны на SBYTE и BYTE?

TotalUnits = 205 * (985 * 21 * 580) = 205 * 1116990 = 2289829500
EmptyMass = 205 * 985 + 580 + 528 * 125 = 268505
CUnits = 852,80534813131971471667194279436


а вот эта строчка мне непонятно чего дает :
const int Counter = sizeof(CloakTable)/sizeof(TCloakTable);


typedef unsigned char BYTE;
typedef signed char SBYTE;

Но TotalUnits - float и не мог переполниться.

Counter - это максимальное кол-во элементов в массиве CloakTable, в нашем случае = 6.


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Korsar
May 4 2005, 05:39
Отправлено #13


Begemoth
Group Icon

Группа: Админы
Сообщений: 1 697
Регистрация: 9-July 01
Из: Пермь
Пользователь №: 521



QUOTE
TotalUnits+=pDesign->m_CloakUnit*(pDesign->m_Mass*Ship.m_Counter);
Заменяем на
QUOTE
TotalUnits+=(unsigned long)( pDesign->m_CloakUnit*(pDesign->m_Mass*Ship.m_Counter) );
и пробуем smile.gif


--------------------
Иногда войны начинаются рано
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Korsar
May 4 2005, 05:42
Отправлено #14


Begemoth
Group Icon

Группа: Админы
Сообщений: 1 697
Регистрация: 9-July 01
Из: Пермь
Пользователь №: 521



еще лучше не забыть:

CODE

SBYTE TBaseTechnology::CU2Cloak(float CUnits){
const int    Counter = sizeof(CloakTable)/sizeof(TCloakTable);
float X1,K1,X2,K2,Xi = min(CUnits,CloakTable[Counter-1].u);
for(int idx=1;idx<Counter;idx++){
  if(Xi<=CloakTable[idx].u) break;
}
X1 = CloakTable[idx-1].u;
K1 = CloakTable[idx-1].c;
X2 = CloakTable[idx  ].u;
K2 = CloakTable[idx  ].c;
return SBYTE((Xi-X1)/(X2-X1)*(K2-K1)+K1);
}

изменить так:
QUOTE

SBYTE TBaseTechnology::CU2Cloak(float CUnits){
const int    Counter = sizeof(CloakTable)/sizeof(TCloakTable);
if ( CUnits < 0 )
  return CloackTable[Counter-1].c;


float X1,K1,X2,K2,Xi = min(CUnits,CloakTable[Counter-1].u);
for(int idx=1;idx<Counter;idx++){
  if(Xi<=CloakTable[idx].u) break;
}
X1 = CloakTable[idx-1].u;
K1 = CloakTable[idx-1].c;
X2 = CloakTable[idx  ].u;
K2 = CloakTable[idx  ].c;
return SBYTE((Xi-X1)/(X2-X1)*(K2-K1)+K1);
}


Хотя, если при отрицательном аргументе возвращать 0 вместо максимальной скрытности, будет весьма забавно smile.gif можно обоснование придумать - начиная с какого-то предела масса флота мешает любым скрывалкам smile.gif

ну и не забыть аналогично исправить на сервере


--------------------
Иногда войны начинаются рано
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 4 2005, 05:56
Отправлено #15


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



Примерно так и собирался сделать.
Даже уже запустил себе сервер, чтоб все проверить, качаюсь, год за 3 минуты летит...


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
zaviruxa
May 4 2005, 09:14
Отправлено #16


Cannon Boat
Group Icon

Группа: Members
Сообщений: 67
Регистрация: 16-March 05
Пользователь №: 1 058



Ещё можно на сервере проверку сделать: если cloak какой-то аномальный у флота, то флот уничтожать, а владельцу флота сообщение, как это в старгейтах сделано при аннигиляции.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
_wh!te_
May 4 2005, 10:12
Отправлено #17


Begemoth
Group Icon

Группа: Members
Сообщений: 1 535
Регистрация: 27-May 03
Пользователь №: 669



Это будет не нармально лутшеб их небыло , представляю, на тебя летит Каток , ты последние штрихи делаешь чтобы отбить его, обьединяешь флоты и тут вылазит Анамалия и Ля-ля каток на планете , и пока его отбить сможешь уже 10 планет облетит smile.gif здорово будетsmile.gif


--------------------
Хочу овладеть тобой, хочу затащить тебя в постель, хочу чтобы ты горела, стонала и бредила, чтобы твоё тело стало влажным и горячим - Это я твой ГРИПП !!!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Musoid
May 4 2005, 11:53
Отправлено #18


Begemoth
Group Icon

Группа: Members
Сообщений: 1 273
Регистрация: 30-July 01
Из: Пермь
Пользователь №: 242



А нефинг багов юзать !!! ;-)


--------------------
для того, чтобы понять что такое рекурсия, нужно сперва понять что такое рекурсия
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 4 2005, 11:53
Отправлено #19


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



QUOTE
TotalUnits+=(unsigned long)( pDesign->m_CloakUnit*(pDesign->m_Mass*Ship.m_Counter) );

Помогает однако. Ух уж мне этот Си.

ХМ ты где? ПОРА ФИКСИТЬ СЕРВЕР !!!


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alex
May 4 2005, 18:29
Отправлено #20


Begemoth
Group Icon

Группа: Server Owners
Сообщений: 1 577
Регистрация: 9-July 01
Из: Санкт-Петербург
Пользователь №: 402



Переместил тему сюда, так больше шансов, что ХМ прочтет.

Ну и если уж начали писать про баги в сервере, то стоит еще пофиксить не всегда работающее ограничение на количество игроков в союзе.


--------------------
Владелец самого мощного оружия галактики - дисконнекта
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

2 страницы V  1 2 >
Fast ReplyReply to this topicStart new topic
1 посетитель читает эту тему (1 гость и 0 скрытых пользователей)
0 пользователей:

 



- Упрощённая версия Сейчас: 29th March 2024 - 00:43