Any way to change cursor mode?

Discussion in 'Fallout General Modding' started by burn, Jun 2, 2017.

  1. burn

    burn Look, Ma! Two Heads!
    Modder

    Apr 22, 2012
    Is there any way to get/set cursor mode via scripting, with or without sfall? I searched the docs for "mode", "cursor", "mouse" - nothing relevant.
    The reason is that I want to try to save a lot of right-clicking in combat and change mode automatically as the cursor moves. For critters - shooting, for hexes - moving, etc.
     
  2. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    у Foxx на форуме NuсlearCity спроси у него там есть такой скрипт, правда я не проверял корректно ли он вообще работает.
    хотя нет у него там не автоматически, а что-то связанное с клавишей A в режиме боя.

    Я так понял ты просто хочешь чтобы курсор сам менялся в зависимости куда он указывает... вроде как можно но что-то у меня есть сомнения, что скриптов это будет корректно работать, я думаю это можно сделать непосредственна в коде sfall'a на движковом уровне.
     
    Last edited: Jun 8, 2017
  3. burn

    burn Look, Ma! Two Heads!
    Modder

    Apr 22, 2012
    Foxx сказал нет ничего такого у него.
     
  4. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    да есть у него, когда входишь в боевой режим по клавише A то курсор автоматом переводится в режим прицела.

    вот основные функции с помощью которых можно сделать автоматическое переключение
    tile_get_objs({int tileNum}, {int elevation});
    tile_under_cursor
    tap_key({int dxScancode});
    Единственное чего не хватает это определение в каком текущем режиме находится курсор, без нее твое предложение нельзя сделать. пиши на гитхаб пусть добавляют сию функцию.
     
  5. burn

    burn Look, Ma! Two Heads!
    Modder

    Apr 22, 2012
    А ну спасибо посмотрю. Новую функцию пока подожду просить. Еще по прошлым запросам не все добавил в твик, чего их зря дергать.
     
  6. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    I tried to implement this feature - it worked, but it does not work the way you wanted.
    To switch the cursor, you need to point it to the hex where the target is located (i.e. feet of the critter).
    Here is a test script you can try it yourself. For the test on the original Sfall, AllowUnsafeScripting option should be enabled.
    Code:
    #include "..\m_headers\define.h"
    #include "..\m_headers\command.h"
    #include "..\m_headers\sfall\sfall.h"
    #include "..\m_headers\sfall\dik.h"
    
    #define SFALL_SC_EVALUATION        (true)
    
    #define Mouse_Mode              call_offset_r0(0x44CB6C)
    #define Set_Mouse_Mode(x)       call_offset_v1(0x44CA18, x)
    
    // 0 = курсор движения, 1 = курсор команд, 2 = курсор прицеливания
    #define MOUSE_MOVE_MODE         (0)
    #define MOUSE_ATTACK_MODE       (2)
    
    procedure start;
    procedure switch_mode(variable mode);
    
    procedure start begin
    
    variable tile, obj_array, obj;
    
       if game_loaded then begin
          set_global_script_type(0);
          set_global_script_repeat(5);
       end
       else begin
     
          if combat_is_initialized then begin
             tile := tile_under_cursor;
             obj_array := tile_get_objs(tile, dude_elevation);
             if Mouse_Mode == MOUSE_MOVE_MODE then begin
                foreach (obj in obj_array) begin
                   if obj_type(obj) == OBJ_TYPE_CRITTER then begin
                      call switch_mode(MOUSE_ATTACK_MODE);
                      break;
                   end
                end
             end
             if len_array(obj_array) == 0 and Mouse_Mode == MOUSE_ATTACK_MODE then
                call switch_mode(MOUSE_MOVE_MODE);
          end
     
       end
     
    end
    
    procedure switch_mode(variable mode) begin
       Set_Mouse_Mode(mode);
    end
     
    Last edited: Aug 12, 2017
  7. burn

    burn Look, Ma! Two Heads!
    Modder

    Apr 22, 2012
    Thank for the example. I will try it out.
     
  8. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    Ну там не очень удобно получается что надо непосредственно наводить на гекс где стоит цель - здесь нужно как то по другому определять, что курсор навелся на криттер. Дорабатывать надо.

    Но мне такой подход как-то не понравился, лучше на отдельную клавишу забиндить скрипт для быстрого переключения курсора на таргет<->движение.
     
    Last edited: Aug 13, 2017
  9. burn

    burn Look, Ma! Two Heads!
    Modder

    Apr 22, 2012
    Да я понял. Все равно попробую, возможно и правда подход не очень, нужно по ощущениям смотреть.