Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 12/14/19 во всех областях

  1. 2 балла
    BorizzK

    Пропал лут с сервера.

    Пользуйтесь нотпад++ с плагином для xml и xml валидаторами в сети Кроме того, при включенном debuglog серв пишет в rpt про ошибки в xml
  2. 1 балл
    paranoyk

    Пропал лут с сервера.

    ....ну если вы последний раз там ковырялись,так там и ошибка в 90% случаев!.....Это же элементарно, вы считаете кто то будет просматривать 16681 строчку вашего тайпса что бы 16611 строчке найти ошибку?
  3. 1 балл
    BorizzK

    Рыблка 1.06 (фикс)

    Всем известно что вновь испеченная рыбалка в 1.06 немного кривая Ловится только скумбрия Причина - неверный результат проверки поверхности в месте рыбалки Но - скумбрия водится только в соленой воде, а карп только в пресной Приступим к фиксу За экшн рыбалки отвечает файл 4_World\Classes\UserActionsComponent\Actions\Continuous\ActionFishingNew.c Почему ловится только скумбрия смотрим код результат рыбалки генерится в функции HandleFishingResultSuccess() в классе ActionFishingNewCB : ActionContinuousBaseCB class ActionFishingNewCB : ActionContinuousBaseCB { .... float rnd = Math.RandomFloatInclusive(0.0,1.0); if (rnd > m_ActionDataFishing.FISHING_GARBAGE_CHANCE) { if (m_ActionDataFishing.m_IsSurfaceSea) fish = ItemBase.Cast(GetGame().CreateObject("Mackerel",m_ActionDataFishing.m_Player.GetPosition(), false)); else fish = ItemBase.Cast(GetGame().CreateObject("Carp",m_ActionDataFishing.m_Player.GetPosition(), false)); } else { string junk_type = m_JunkTypes.Get(Math.RandomInt(0,m_JunkTypes.Count())); fish = ItemBase.Cast(GetGame().CreateObject(junk_type,m_ActionDataFishing.m_Player.GetPosition(), false)); fish.SetHealth("","Health",fish.GetMaxHealth("","Health") * 0.1); } ... } Согласно условию if (rnd > m_ActionDataFishing.FISHING_GARBAGE_CHANCE) есть шанс (если rnd < m_ActionDataFishing.FISHING_GARBAGE_CHANCE), что вместо рыбки будет мусор из массива m_JunkTypes Но нас интерисует условие if (m_ActionDataFishing.m_IsSurfaceSea) но! m_ActionDataFishing.m_IsSurfaceSea всегда true Эта переменная в классе m_ActionDataFishing устанавливается таким макаром в SetupAction vector pos_cursor = action_data.m_Target.GetCursorHitPos(); if (GetGame().SurfaceIsSea(pos_cursor[0],pos_cursor[2])) { FishingActionData.Cast(action_data).m_IsSurfaceSea = true; } однако на стороне сервера GetCursorHitPos() всегда вернет 0 0 0 - а там что? Море потому m_IsSurfaceSea всегда true Вобщем косяк разработчикив Мы же организуем свою проверку и переустановим значение m_IsSurfaceSea, что бы оно соответствовало действительности, заодно поправим количество рыбки - не может же ловиться частично съеденная рыба + уменьшим дамаг для крючка, удочки Ну не может оно так дамажится как сейчас Вобщем такой вот код - дебаг и тп не убираю сознательно //FIX 12.12.2019 //AUTHOR: BORIZZ.K modded class FishingActionData : ActionData { const float FISHING_DAMAGE = 1.0; //Fix hook damage const bool MyFishingActionDebug = true; bool m_IsSurfaceSea = false; } modded class ActionFishingNewCB : ActionContinuousBaseCB { override void HandleFishingResultSuccess() { if (!GetGame().IsMultiplayer() || GetGame().IsServer()) { ItemBase fish; if (!m_ActionDataFishing.m_Bait) m_ActionDataFishing.InitBait(ItemBase.Cast(m_ActionDataFishing.m_MainItem.FindAttachmentBySlotName("Hook"))); if (!m_ActionDataFishing.IsBaitEmptyHook()) { m_ActionDataFishing.m_Bait.AddHealth(-m_ActionDataFishing.FISHING_DAMAGE); MiscGameplayFunctions.TurnItemIntoItem(m_ActionDataFishing.m_Bait,m_ActionDataFishing.m_Bait.ConfigGetString("hookType"),m_ActionDataFishing.m_Player); } else { m_ActionDataFishing.m_Bait.AddHealth(-m_ActionDataFishing.FISHING_DAMAGE * 2); } //Mod m_ActionDataFishing.m_IsSurfaceSea = IsFishingOnSea(m_ActionDataFishing.m_Player) if (m_ActionDataFishing.MyFishingActionDebug) CheckIsFishingOn(m_ActionDataFishing.m_Player); float rnd = Math.RandomFloatInclusive(0.0,1.0); if (rnd > m_ActionDataFishing.FISHING_GARBAGE_CHANCE) { //if (m_ActionDataFishing.m_IsSurfaceSea) if (IsFishingOnSea(m_ActionDataFishing.m_Player)) //Call function with surface check { fish = ItemBase.Cast(GetGame().CreateObject("Mackerel",m_ActionDataFishing.m_Player.GetPosition(), false)); if (m_ActionDataFishing.MyFishingActionDebug) Print("::: SERVER: [ActionFishingNewCB]: HandleFishingResultSuccess(): Player: " + m_ActionDataFishing.m_Player.ToString() + ", Name: " + m_ActionDataFishing.m_Player.GetIdentity().GetName() + ", pos = " + m_ActionDataFishing.m_Player.GetPosition() + ", fish = Mackerel = " + fish); } else { fish = ItemBase.Cast(GetGame().CreateObject("Carp",m_ActionDataFishing.m_Player.GetPosition(), false)); if (m_ActionDataFishing.MyFishingActionDebug) Print("::: SERVER: [ActionFishingNewCB]: HandleFishingResultSuccess(): Player: " + m_ActionDataFishing.m_Player.ToString() + ", Name: " + m_ActionDataFishing.m_Player.GetIdentity().GetName() + ", pos = " + m_ActionDataFishing.m_Player.GetPosition() + ", fish = Carp = " + fish); } } else { string junk_type = m_JunkTypes.Get(Math.RandomInt(0,m_JunkTypes.Count())); fish = ItemBase.Cast(GetGame().CreateObject(junk_type,m_ActionDataFishing.m_Player.GetPosition(), false)); fish.SetHealth("","Health",fish.GetMaxHealth("","Health") * 0.1); } //Mod if (fish) { fish.SetWet(0.3); fish.PlaceOnSurface(); fish.SetOrientation(fish.GetOrientation()); if (fish.HasQuantity()) { //Mod if (fish.GetHealth() > (fish.GetMaxHealth() / 2)) //Fix fish quantity //If fish health > 1/2 { fish.SetQuantity( fish.GetQuantityMax() ); } else { //native float coef = Math.RandomFloatInclusive(0.5, 1.0); float item_quantity = fish.GetQuantityMax() * coef; item_quantity = Math.Round(item_quantity); fish.SetQuantity( item_quantity ); } //Mod } fish.SetSynchDirty(); //Mod } m_ActionDataFishing.m_MainItem.AddHealth(-m_ActionDataFishing.FISHING_DAMAGE / 2); } } bool IsFishingOnSea(PlayerBase player) { vector pos = player.GetPosition() + (player.GetDirection() * 5); return GetGame().SurfaceIsSea(pos[0], pos[2]); //return true if sea } bool IsFishingOnPond(PlayerBase player) //Not used but let it be here { vector pos = player.GetPosition() + (player.GetDirection() * 5); return GetGame().SurfaceIsPond(pos[0], pos[2]); } void CheckIsFishingOn(PlayerBase player) { vector pos = player.GetPosition() + (player.GetDirection() * 5); bool s_sea = GetGame().SurfaceIsSea(pos[0], pos[2]); bool s_pond = GetGame().SurfaceIsPond(pos[0], pos[2]); string surface_type; GetGame().SurfaceGetType(pos[0], pos[2], surface_type); Print("::: SERVER: [ActionFishingNewCB]: CheckIsFishingOn: Player: " + player + ", Name: " + player.GetIdentity().GetName() + ", pos = " + pos + ": SurfaceIsSea = " + s_sea + " : SurfaceIsPond = " + s_pond + " >>> surface_type = " + surface_type + " >>> m_ActionDataFishing.m_IsSurfaceSea = " + m_ActionDataFishing.m_IsSurfaceSea); } }
  4. 1 балл
    У кого нить есть доступ к багтрекеру этого гавнища с названием дайз? Вывалите им: 1. WRITE в данный момент работает как APPEND, если писать сразу. 2. Если открыть файл файл как WRITE, а потом закрыть, а потом снова открыть как WRITE - то данные в файле будут затерты.(т.е. 2 раза приходится открывать файл) 3. При добавлении записи как APPEND в файл, через FPrintln, перенос строки ставится только ПОСЛЕ добавления, а должен млять ставиться и ДО suka blyat! Особенно если данные в файле уже были. #13#10 4. Найдите того мудака, который писал функцию - /** \brief Converts string's first character to ASCII code \param str String for convert to ASCII code \return \p ascii code \p int. @code int ascii = "M".ToAcsii(); Print(ascii); >> ascii = 77 @endcode */ proto int ToAscii(string str); 4.1 Поясните этому дауну, что он А) опечатался в брифе - ToAcsii не тоже самое что ToAscii 4.2 Спросите у этого дауна, следующее - А) Если *я матерился, запинайте меня* функция НЕ static, и ее нельзя вызвать как string.ToAscii( MyString ); - то что эта тупарылая блядина хочет в аргументе? Б) В брифе у него она как то млять БЕЗ аргумента вызывается, - он там сам то определился - нужен, или нет аргумент? В) Это гавно при любых раскладах, или не работает, или выдает 0 - ВСЕГДА. Г) Как не усирайся, я непанимайтунг - MyString.ToAscii(); MyString.ToAscii( m_Buffer ); да хоть как пиши, или не будет работать или выдаст 0. 5. Желательно дать ему 3.14ЗДЫ, и крайне желательно НОГАМИ. 6. Машины лагают как твари. 7. Проблемы кодировки: string MyStr = "Вася"; Print( string.Format( "Вторая букавка: %1", MyStr.Get( 2 ) ) ); - Где лог тварина? UTF8 свалил? 8. Нихера не исправили из багртекера от слова СОВСЕМ - НИ ЕДИНОГО БАГА! 9. Зато ебааааа ЛИВОНИЯ. "Релизу" сцука уже несколько лет.....
  5. 0 баллов
    BorizzK

    Рыбалка

  6. 0 баллов
    BorizzK

    Рыбалка

    Ща выложу В гайдах
×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка