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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±

    Что лучше для обработки актёров: один глобальный таймер или индивидуальные?

    Доброго времени суток, хочу узнать, как лучше всего сделать таймер для каждого NPC на сервере.
    У меня есть 1 очень интересная мысль, и для этого мне нужен таймер, только вот какой, 1 глобальный, или для каждого NPC свой..
    Последний раз редактировалось Сергей; 24.08.2019 в 20:10. Причина: Смена вопроса

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Подыму

  3. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Опиши хотя бы вкратце свою интересную мысль и тогда станет понятно какой в твоей ситуации таймер будет лучше.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Опиши хотя бы вкратце свою интересную мысль и тогда станет понятно какой в твоей ситуации таймер будет лучше.
    Если быть точным, я хочу дать боту мысли, допустим 1 раз в 50 секунд, он должен показывать мысль, или выполнять какую-то анимацию

    И ещё такой вопрос, не будет ли тут лишним использование: Streamer_SetIntData

    Ибо я его использую в команде, допустим /setbottext id_bot text

    PHP код:
    Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABELActor3DtextId[Actor_Serv[bot_id]] , E_STREAMER_WORLD_IDGetDynamicActorVirtualWorld(Actor_Serv[bot_id])); 
    Последний раз редактировалось Сергей; 24.08.2019 в 19:45.

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Если мысли будут появляться всегда и у всех ботов сразу - можно один таймер на всех.
    Если в определённое время у нескольких ботов сразу, а все остальные просто должны стоять - один таймер + foreach или индивидуальные таймеры.
    А если может быть так, что из всех ботов нужно показать только для одного мысли - индивидуальный таймер.
    Хотя, на самом деле, если в таймере будет простецкий код, то особой разницы не будет тут.

    Касаемо Streamer_SetIntData не совсем понял. Что именно ты тут делаешь и почему использование функции может быть вдруг лишней?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Если мысли будут появляться всегда и у всех ботов сразу - можно один таймер на всех.
    Если в определённое время у нескольких ботов сразу, а все остальные просто должны стоять - один таймер + foreach или индивидуальные таймеры.
    А если может быть так, что из всех ботов нужно показать только для одного мысли - индивидуальный таймер.
    Хотя, на самом деле, если в таймере будет простецкий код, то особой разницы не будет тут.

    Касаемо Streamer_SetIntData не совсем понял. Что именно ты тут делаешь и почему использование функции может быть вдруг лишней?
    Вообщем, планирую некоторых одарить мыслями, других и мыслями и действиями, теперь вопрос третий, лучше через стример делать Npc или стандартно?

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

    Попробовал сделать функцию для создания ботов, но, она работает криво, кривость в том, что неправильно указывается
    ActorID
    Т.е допустим использую:

    PHP код:
    Actor_Serv[0] = CreateDynamicActor_Server(150, -1424.1647,-1125.9562,1521.9900,91.63320100.0101); 
    На конце bot_id выдается вообще неправильно... проблема в том, что если использовать таймер, bot_id оказывается неверным
    т.е, в таймере я намерен использовать то что я хочу сделать, допустим дать боту мысль, по итогу чтобы применить к указанному боту, а именно Id: 0, у меня ничего не получится... ибо всё перепутано

    PHP код:
    stock CreateDynamicActor_Server(modelFloat:x,Float:yFloat:zFloat:a,invulnerable 1Float:health 100.0worldid = -1interiorid = -1playerid = -1Float:streamdistance STREAMER_ACTOR_SDareaid = -1priority 0
    {
        new 
    id_actor CreateDynamicActor(modelx,y,z,a,invulnerable,healthworldidinterioridplayerid,streamdistanceareaidpriority); 
        if(
    id_actor != INVALID_ACTOR_ID)
        {
            
    // создать 3дтекст для разговора
            
    Actor3DtextId[id_actor] = CreateDynamic3DTextLabel("-",COLOR_ALOGIN,x,y,z+ACTOR_CHAT_TEXT_OFFSET_HEIGHT,5.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1worldidinteriorid, -110.0);
            
    Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABELActor3DtextId[id_actor] , E_STREAMER_WORLD_IDMAX_ACTORS);
        }
        return 
    id_actor

    Последний раз редактировалось Сергей; 24.08.2019 в 21:13.

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    1) Что за bot_id?
    2) Что ты пытаешься сделать вот этим:
    PHP код:
     Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABELActor3DtextId[id_actor] , E_STREAMER_WORLD_IDMAX_ACTORS); 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для Сергей
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Покопавшись, переделал функцию:

    PHP код:
    stock CreateDynamicActor_Server(id_actor,modelFloat:x,Float:yFloat:zFloat:a,invulnerable 1Float:health 100.0worldid = -1interiorid = -1playerid = -1Float:streamdistance STREAMER_ACTOR_SDareaid = -1priority 0
    {
        new 
    bot_id CreateDynamicActor(modelx,y,z,a,invulnerable,healthworldidinterioridplayerid,streamdistanceareaidpriority); 
        if(
    bot_id != INVALID_ACTOR_ID)
        {
            
    Actor3DtextId[bot_id] = CreateDynamic3DTextLabel("-",COLOR_ALOGIN,x,y,z+ACTOR_CHAT_TEXT_OFFSET_HEIGHT,5.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1worldidinteriorid, -110.0);
            
    ActorFirstPos[bot_id][0] = x;
            
    ActorFirstPos[bot_id][1] = y;
            
    ActorFirstPos[bot_id][2] = z;
            
    ActorFirstPos[bot_id][3] = a;
            new 
    control_summ random(123123)+random(123);
            if(
    Actor_Timer[id_actor] == 0
            {
                
    Actor_Timer[id_actor] = SetTimerEx("OnActorTimer"2000true"dd",id_actor,control_summ);
                
    Actor_ControlSumm[id_actor] = control_summ;
            }
        }
        return 
    bot_id

    В итоге таймер не реагирует на NPC с идом 0, через принт показывает, что таймер для этого ида npc есть, а вот реакции не поступает

    По поводу
    PHP код:
    Streamer_SetIntData 
    , я и спросил, она будет лишней, или нет...
    Заменить 3d text в виртуальном мире хотел, в котором находиться бот, не стоит этого делать?
    Последний раз редактировалось Сергей; 24.08.2019 в 21:34.

  9. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Использовать Streamer_SetIntData прямо после создания 3d-текста - странно, ибо виртуальный мир можно задать и в CreateDynamic3dText.

    И почему с одними переменными ты работаешь через "bot_id", а с другими через "id_actor"?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Использовать Streamer_SetIntData прямо после создания 3d-текста - странно, ибо виртуальный мир можно задать и в CreateDynamic3dText.

    И почему с одними переменными ты работаешь через "bot_id", а с другими через "id_actor"?
    Сейчас я пользуюсь логикой, создаю бота, и работаю с конкретным его ид т.е допустим Actor_Serv[17], создаю для него таймер, и там уже дальше продолжаю делать различные вещи

    - Вопрос, как же по другому это всё реализовать? Есть ли конкретные предложения по поводу этого всего?
    Последний раз редактировалось Сергей; 24.08.2019 в 22:17.

 

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

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

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

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

Ваши права

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