Просмотр полной версии : [Вопрос] Не создаётся объект
Почему может не создаваться объект для игрока?
Функция возвращает невалидный ID объекта. Странно, но код раньше работал, а в какой-то момент перестал
Объекты для игрока нигде особо не используются
object[playerid] = CreatePlayerObject(playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0);
AttachCameraToPlayerObject(playerid, object[playerid]);
Так а какое количество CreateObject создаётся?
Так же если объектов стримера вокруг слишком много - ничего так же не будет работать.
Всё ведь завязано на лимите в 1000 объектов. И для всех функций лимит общий: хоть CreateObject, хоть CreatePlayerObject (CreateDynamicObject - это тот же самый CreateObject, только создаётся и удаляется стримером в определённые моменты)
А есть какая функция посмотреть количество статических объектов?
Или перехват только делать?
Все функции, свзанные с объектами, можно в a_objects.inc увидеть.
Только перехват.
Есть возможность как-то сократить количество предметов вокруг игрока в этот момент?
Так а ты удостоверился, что количество CreateObject минимально и дело именно в большом числе динамических объектов?
Не проще просто воспользоваться CreateDynamicObject с соответствующим параметром? Говорю же, на деле будет тот же CreatePlayerObject, только обрабатываемый стримером
Так а ты удостоверился, что количество CreateObject минимально и дело именно в большом числе динамических объектов?
Не проще просто воспользоваться CreateDynamicObject с соответствующим параметром? Говорю же, на деле будет тот же CreatePlayerObject, только обрабатываемый стримером
Нет, как раз, всё то же самое. Я даже вывел на экран количество статичных и динамичных объектов в стриме.
Динамический объект я тоже пробовал, абсолютно тот же результат. Да и с чего ему быть другим, когда вокруг больше объектов, чем есть лимит?..
Отойдя в другое место объект создаётся нормально
Ну разве что через скрытие всех объектов, создания нового и показа всех объектов.
Попробуй Streamer_DestroyAllVisibleItems или Streamer_ToggleAllItems для скрытия
Ну разве что через скрытие всех объектов, создания нового и показа всех объектов.
Попробуй Streamer_DestroyAllVisibleItems или Streamer_ToggleAllItems для скрытия
А чем они назад включаются?
Streamer_Update попробуй или Streamer_ToggleItemUpdate. Вообще открой инклуд стримера и там будет список всех функций. Среди них и подбирай подходящую
Streamer_Update попробуй или Streamer_ToggleItemUpdate. Вообще открой инклуд стримера и там будет список всех функций. Среди них и подбирай подходящую
Так я ж так и делаю, только фиг там поймёшь что там кого обновляет и для чего там что нужно
Да и Streamer_DestroyAllVisibleItems не убирает ничего... Самое прикольное, что эффект нужный она даёт
Так я ж так и делаю, только фиг там поймёшь что там кого обновляет и для чего там что нужно
Так там примерно по названиям понять можно же, не? Ну или хотя бы методом научного тыка.
Как и говорил
Скрыть:
Streamer_ToggleAllItems(playerid, STREAMER_TYPE_OBJECT, false);
Streamer_Update(playerid, STREAMER_TYPE_OBJECT);
Показать:
Streamer_ToggleAllItems(playerid, STREAMER_TYPE_OBJECT, true);
Streamer_Update(playerid, STREAMER_TYPE_OBJECT);
Хотя сейчас пытался проверить создание CreateDynamicObject при лимите и всё нормально создаётся. Не будет создаваться только если лимит CreateObject/CreateDynamicObject превышен (точнее, "создаваться" (записываться в память стримера) и возвращать ID будет, но отображаться не будет).
CreateDynamicObject будет возвращать ID даже если объектов больше 1000
Так там примерно по названиям понять можно же, не? Ну или хотя бы методом научного тыка.
Как и говорил
Скрыть:
Streamer_ToggleAllItems(playerid, STREAMER_TYPE_OBJECT, false);
Streamer_Update(playerid, STREAMER_TYPE_OBJECT);
Показать:
Streamer_ToggleAllItems(playerid, STREAMER_TYPE_OBJECT, true);
Streamer_Update(playerid, STREAMER_TYPE_OBJECT);
Хотя сейчас пытался проверить создание CreateDynamicObject при лимите и всё нормально создаётся. Не будет создаваться только если лимит CreateObject/CreateDynamicObject превышен (точнее, "создаваться" (записываться в память стримера) и возвращать ID будет, но отображаться не будет).
CreateDynamicObject будет возвращать ID даже если объектов больше 1000
У меня как: 550 объектов статических, и вокруг ещё в зоне стрима ~500 на момент создания
Если хочешь, пошли я тебе покажу всё с выводом на экран, что бы понятнее было
Немного всё же не понятно назначение этих функций. Streamer_ToggleAllItems.. "Переключение"... чего?
Streamer_Update... "обновить объекты"? По-моему, так себе названия)
У меня как: 550 объектов статических, и вокруг ещё в зоне стрима ~500 на момент создания
Если хочешь, пошли я тебе покажу всё с выводом на экран, что бы понятнее было
Так кинь код, которым создаёшь.
Я тебе тоже могу записать видео, где будет видно, что объект прекрасно создаётся.
И да, вполне возможно, что ты сидишь на старой версии стримера просто, в которой это может быть не учтено :)
Немного всё же не понятно назначение этих функций. Streamer_ToggleAllItems.. "Переключение"... чего?
Переключение того, что укажешь в параметре функции
Streamer_Update... "обновить объекты"? По-моему, так себе названия)
Причём тут объекты-то? В названии не указывается что именно обновляется. Это просто функция, которая обращается к коду, который обновляет данные для игрока. А уже какие данные она обновит - зависит от того, что в ней указать. Собственно, как и в предыдущей функции.
В стримере же не только объекты есть. И глупо было бы для каждого вида данных (объекты/пикапы/динамические зоны и т.п.) делать свою функцию.
Так кинь код, которым создаёшь.
Я тебе тоже могу записать видео, где будет видно, что объект прекрасно создаётся.
И да, вполне возможно, что ты сидишь на старой версии стримера просто, в которой это может быть не учтено :)
Переключение того, что укажешь в параметре функции
Причём тут объекты-то? В названии не указывается что именно обновляется. Это просто функция, которая обращается к коду, который обновляет данные для игрока. А уже какие данные она обновит - зависит от того, что в ней указать. Собственно, как и в предыдущей функции.
В стримере же не только объекты есть. И глупо было бы для каждого вида данных (объекты/пикапы/динамические зоны и т.п.) делать свою функцию.
Так я это понимаю, что я, не вижу, думаешь, что указываю в параметрах объекты? Я говорю тебе просто на примере объектов
"Переключить что": переключить объекты? А что, они не переключены? Что такое вообще "переключить объекты"?
Nexius_Tailer
21.06.2017, 13:13
Так я это понимаю, что я, не вижу, думаешь, что указываю в параметрах объекты? Я говорю тебе просто на примере объектов
"Переключить что": переключить объекты? А что, они не переключены? Что такое вообще "переключить объекты"?
Это уже следствие языкового барьера, не более. Одно и то же слово может иметь не один перевод и в конкретной ситуации его интерпретация также может изменяться, так что здесь это не обязательно "переключить". По контексту скорее всего имеется в виду "включить/выключить видимость/присутствие чего-либо"
Это уже следствие языкового барьера, не более. Одно и то же слово может иметь не один перевод и в конкретной ситуации его интерпретация также может изменяться, так что здесь это не обязательно "переключить". По контексту скорее всего имеется в виду "включить/выключить видимость/присутствие чего-либо"
Хорошо.
А почему Streamer_DestroyAllVisibleItems не уничтожает все видимые объекты?
Хорошо.
А почему Streamer_DestroyAllVisibleItems не уничтожает все видимые объекты?
Он их уничтожает, просто следует так же отключать и обновление данных об объектах для игрока через ToggleItemUpdate и тогда они не будут появляться вновь
Он их уничтожает, просто следует так же отключать и обновление данных об объектах для игрока через ToggleItemUpdate и тогда они не будут появляться вновь
То есть, в моём случае тогда просто достаточно просто вызвать Streamer_DestroyAllVisibleItems, и тогда можно без использования ToggleItemUpdate спокойно бегать по "уничтоженным" объектам?
То есть, в моём случае тогда просто достаточно просто вызвать Streamer_DestroyAllVisibleItems, и тогда можно без использования ToggleItemUpdate спокойно бегать по "уничтоженным" объектам?
Нет, в твоём случае сначала нужно отключить обновление объектов, а после уже уничтожать их.
Эта функция лишь вызывает DestroyPlayerObject, после которой плагин сразу же вызывает CreatePlayerObject, так как обновление данных об объектах не отключено и, соответственно, плагин думает, что объекты вокруг просто не показаны для игрока и их нужно показать (срабатывает условие, за счёт которого показываются объекты, которые только попадают в зону стрима игрока. А ToggleItemUpdate как раз и отключает это условие).
Нет, в твоём случае сначала нужно отключить обновление объектов, а после уже уничтожать их.
Эта функция лишь вызывает DestroyPlayerObject, после которой плагин сразу же вызывает CreatePlayerObject, так как обновление данных об объектах не отключено и, соответственно, плагин думает, что объекты вокруг просто не показаны для игрока и их нужно показать (срабатывает условие, за счёт которого показываются объекты, которые только попадают в зону стрима игрока. А ToggleItemUpdate как раз и отключает это условие).
Так а смысл тогда их апдейтить? Если я их удаляю, сразу создаю нужный объект, и они, как раз, все на место возвращаются
Так а смысл тогда их апдейтить? Если я их удаляю, сразу создаю нужный объект, и они, как раз, все на место возвращаются
Так а где я говорил удалять их? Мой последний вариант никак не связан с Streamer_DestroyAllVisibleItems.
Да и, как уже говорил, всё без этих махинаций должно работать. По крайней мере, с последней версией стримера
Так а где я говорил удалять их? Мой последний вариант никак не связан с Streamer_DestroyAllVisibleItems.
Да и, как уже говорил, всё без этих махинаций должно работать. По крайней мере, с последней версией стримера
Так ведь вот я и говорю: получается, достаточно простого Streamer_DestroyAllVisibleItems.. если я правильно всё понял?
Так ведь вот я и говорю: получается, достаточно простого Streamer_DestroyAllVisibleItems.. если я правильно всё понял?
Если ты хочешь именно скрыть объекты, чтоб создать новый - нет, не достаточно.
Перечитай ещё раз предыдущие сообщения и попробуй сам, если не поймёшь. Собственно, этим ты должен был уже давно заняться, а не допытывать тут меня :) Уже давно нашёл бы решение.
Если ты хочешь именно скрыть объекты, чтоб создать новый - нет, не достаточно.
Перечитай ещё раз предыдущие сообщения и попробуй сам, если не поймёшь. Собственно, этим ты должен был уже давно заняться, а не допытывать тут меня :) Уже давно нашёл бы решение.
Так я же и говорю, что работает! :)
Занялся уже давно конечно)
Так я же и говорю, что работает! :)
Занялся уже давно конечно)
Ну так тогда поделился бы с остальными своим вариантом :) А то вдруг у людей та же проблема будет и у них так же не будет работать стример, как работает у меня О_о
Так ведь я же уже и поделился
Да и Streamer_DestroyAllVisibleItems не убирает ничего... Самое прикольное, что эффект нужный она даёт
Вот таким образом вся проблема решилась, спасибо Деймосу
Streamer_DestroyAllVisibleItems(playerid, STREAMER_TYPE_OBJECT);
noclipdata[playerid][flyobject] = CreatePlayerObject(playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0);
AttachCameraToPlayerObject(playerid, noclipdata[playerid][flyobject]);
Можешь для нашего столика провести эксперимент и убрать Streamer_DestroyAllVisibleItems? То бишь, без него попробуй создать объект. Мои опыты показывают, что дело не в нём :)
Можешь для нашего столика провести эксперимент и убрать Streamer_DestroyAllVisibleItems? То бишь, без него попробуй создать объект. Мои опыты показывают, что дело не в нём :)
Просто, когда я задавал этот вопрос, код отличался от этого как раз только отсутствием этой строчки)
Ну сейчас пепроверю, конечно, для точности
- - - Добавлено - - -
Проверка показала следующие результаты:
Без дестроя объект == 65535, камера где-то в воздухе, двигать ей нельзя
http://savepic.ru/14506714m.png (http://savepic.ru/14506714.htm)
Со вставкой дестроя перед созданием ситуация меняется:
Статичные объекты сразу видно, камеру мышкой иногда с первого раза двигать нельзя, но летать можно
http://savepic.ru/14495451m.png (http://savepic.ru/14495451.htm)
если немного отлететь, объекты, как и положено всем динамическим, появятся на своём месте
http://savepic.ru/14524122m.png (http://savepic.ru/14524122.htm)
Либо у тебя стример какой-то странный, либо у меня. Ну не суть.
Чтоб объекты сразу появились, можно использовать Streamer_Update после перемещения камеры.
Закрыто.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot