Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Аватар для naxxyelite
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±

    Спавн после смерти [проблема] / Spawn after death [problem] / 2007

    Без надежды обращусь еще раз сюда. Прошу отписывать в теме тех, кто действительно шарит в данной теме. На протяжении вот уже более 5 лет меня терзает все та же проблема с проблемным спавном после смерти. (P.S) Не давайте советов по типу "Кинь OnPlayerDeath"; "Кинь OnPlayerSpawn". Все это бессмысленные занятия, не имеющие к этому вопросу никакого отношения, копать нужно гораздо глубже. Все бы ничего, я смирился бы с данной проблемой еще тогда, когда только узнал о ней. Также совет по типу "впишы SpawnPlayer(playerid); в OnPlayerDeath)0". Да, это от части является решением проблемы, но все это для меня некрасиво и терзает мою душу перфекциониста. Наверняка многие из Вас видели уже где нибудь темы с такой же проблемой, о которой говорится в этой теме. Все бы ничего, если бы на том же SRP уже из года в год все работает как часы и не подает никаких причин хвататься за сердце и гуглить в поисках решения этой проблемы. Скажу сразу: Мод чистый, а значит что ни RLS, ни резнов и прочий ккал) А это значит что OnPlayerSpawn; OnPlayerDeath не несут в себе никаких других функций и ничего другого. (return true;). SetSpawnInfo, AddPlayerClass - все это также улетает, потому что ну никаким образом не относится к данной проблеме. Советы по типу "переустанови GTA"; "удали собейт"; "перезагрузи роутер" и прочее прочее наподобие такого тоже отлетают. Если кто до сих пор не вдуплил о какой проблеме идет речь, то суть такова: Рандомно(ибо я не нашел никаких закономерностей и зацепок в этой проблеме) умерев, от падения, от дамага, не важно - сбивается анимация и персонаж способен дальше рассекать по дорогам штата, как ни в чем не бывало, только уже без синхронизации, а значит что у других игроков мы валяемся котлетой в АФК на месте смерти, одна все это ложь и обман. Скажу сразу: никаких ClearAnimations и прочего дерьма нигде не присутствует. OnPlayerDeath вызывается нормально, а вот что насчет спавна после смерти, то все странно. При нормальной смерти, все как полагается: смерть, анимация, камера вверх, спавн по КД через 2 секунды - все хорошо. При таком же дерьме: смерть, эффект как при ClearAnimations, дальнейший рассинхрон между игроками, способность к перемещению и никакого спавна через 2 секунды. Спавн при такой проблеме произойдет тогда, когда ныне "мёртвый" игрок получит дамаг после такой вот смерти еще раз: т.е упадет с какой нибудь крыши, либо же так получится, что другой игрок стрельнет в воздух (как покажется ему), но пока вы бегали - он попал в Вас, то после повторного дамага произойдет анимация смерти, и спавн через 2 секунды как полагается. Кароче спавну очень очень плохо, но есть жеее какое то решение проблемы.. Все форумы и темы с такой проблемой перешарил аж с 2011-х годов, но толкового решения так мною и не найдено.

    Может тут хоть бог спустится с небес и поможет

    Спасибо

    https://i.imgur.com/TKIr0Ic.jpg

  2. #2
    Аватар для Batya_Montes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2017
    Адрес
    0x
    Сообщений
    163
    Репутация:
    13 ±
    Да никак ты это не исправишь. Все дело в реконнекте не выходя из игры. Если тебя каким-то образом реконнектит к серверу без перезахода в игру (потеря соединения, собейтом или еще как-то), то в 99% у тебя будет этот баг. С чем связано - да фиг знает, скорее всего калкор не предусмотрел обнуление чего-то при реконнекте.

    Так же еще одним моментом является вызов OnPlayerTakeDamage. После нормальный смерти обычно приходит данный РПЦ с дамагом как будто от падения, если же срабатывает данный баг - этот РПЦ не вызывается.
    0x

  3. #3
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Попробуйте прологировать пакеты данных через pawn.raknet.

  4. #4
    Аватар для naxxyelite
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Попробуйте прологировать пакеты данных через pawn.raknet.
    Логировать там нечего. Логировал) Одно и тоже) Смерть вызывается. RPC спавна нет

    - - - Добавлено - - -

    Цитата Сообщение от Batya_Montes Посмотреть сообщение
    Да никак ты это не исправишь. Все дело в реконнекте не выходя из игры. Если тебя каким-то образом реконнектит к серверу без перезахода в игру (потеря соединения, собейтом или еще как-то), то в 99% у тебя будет этот баг. С чем связано - да фиг знает, скорее всего калкор не предусмотрел обнуление чего-то при реконнекте.

    Так же еще одним моментом является вызов OnPlayerTakeDamage. После нормальный смерти обычно приходит данный РПЦ с дамагом как будто от падения, если же срабатывает данный баг - этот РПЦ не вызывается.
    Рандомно. Иногда хоть 10 раз реконнект сделаешь - нормально будет умирать, иногда 1 раз реконнект сделаешь - баг появится. Что насчет OnPlayerTakeDamage - то на скрине показано, у меня детект смерти не по OnPlayerDeath, а по OnPlayerTakeDamage - pHP <= 0.0. OnPlayerDeath ничего вообще в себе не несет. Поэтому при баге OnPlayerTakeDamage вызывается нормально.

    + на SRP сколько раз собейтом не реконнектись - все в порядке будет
    Последний раз редактировалось naxxyelite; 31.05.2018 в 14:38.

  5. #5
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    Попробуй библиотеку weapon config
    Если я не ошибаюсь, у самого еще руки не дошли ее использовать, но вроде как там вообще система смерти кастомная.

  6. #6
    Аватар для Batya_Montes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2017
    Адрес
    0x
    Сообщений
    163
    Репутация:
    13 ±
    Цитата Сообщение от naxxyelite Посмотреть сообщение
    Логировать там нечего. Логировал) Одно и тоже) Смерть вызывается. RPC спавна нет

    - - - Добавлено - - -



    Рандомно. Иногда хоть 10 раз реконнект сделаешь - нормально будет умирать, иногда 1 раз реконнект сделаешь - баг появится. Что насчет OnPlayerTakeDamage - то на скрине показано, у меня детект смерти не по OnPlayerDeath, а по OnPlayerTakeDamage - pHP <= 0.0. OnPlayerDeath ничего вообще в себе не несет. Поэтому при баге OnPlayerTakeDamage вызывается нормально.

    + на SRP сколько раз собейтом не реконнектись - все в порядке будет
    ты вызываешь при 0 хп setplayerhealth с 0 ?
    0x

  7. #7
    Аватар для naxxyelite
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±
    Цитата Сообщение от Batya_Montes Посмотреть сообщение
    ты вызываешь при 0 хп setplayerhealth с 0 ?
    Нет, PSpawn(playerid) - PlayerKilled[playerid] = true; , PlayerSpawned[playerid] = false; , GameText + SetSpawnInfo, и если не удастся решить этот трабл придется юзать еще мгновенный спавн (SpawnPlayer)

    - - - Добавлено - - -

    Цитата Сообщение от pawnoholic Посмотреть сообщение
    Попробуй библиотеку weapon config
    Если я не ошибаюсь, у самого еще руки не дошли ее использовать, но вроде как там вообще система смерти кастомная.
    Ставил.. выглядит это тоже так себе) Без камеры вверх и анимация такая себе.. Если дефолтную смерть никак не пофиксить буду юзать мгновенный спавн

  8. #8
    Аватар для =GoD=
    Пользователь

    Статус
    Оффлайн
    Регистрация
    28.01.2020
    Сообщений
    3
    Репутация:
    0 ±
    Почитал ваш ответ и думаю поставлю я себе проверку. В OnPlayerDeath в конец паблика подкину переменную типа Pvar со значением и в OnPlayerSpawn буду удалять ее. Ну и буду проверять этот Pvar на наличие сек. через 3- 5 после OnPlayerDeath. Если получил значение от Pvar попросить игрока переподключиться в связи, к примеру, рассинхронизации с сервером (они все ровно не поймет о чем речь и просто перезайдет) или самостоятельно его переподключить или как выше упомянуто вызвать спавн. Но это скорее крайность. По мне так лучше самостоятельно отключить игрока и оповестить о причинах требуемого перезахода, чем оставить его на серваке лагать.

  9. #9
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Я в OPD сделал таймер на 5 сек, в самом таймере делаю проверку
    if(GetPlayerState(playerid) == PLAYER_STATE_WASTED) SetPlayerHealth(playerid, 1.0);
    И все нормально работает)

  10. #10
    Аватар для geneff
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±
    Избавился от этого бага при помощи использования SetSpawnInfo, так как это правильный медот задавания координат спавна игрока, а не OnPlayerSpawn + SetPlayerPos.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •