Перейти к содержанию

Рекомендуемые сообщения

 
 

Может кому-то пригодится.
 

Спойлер

function GetTimeFull() --получить полностью игровую дату в момент вызова функции
    local gtime = game.get_game_time()
    return gtime:dateToString(game.CTime.DateToDay).." в "..gtime:timeToString(game.CTime.TimeToMinutes) --Итого (у меня получилось): Сентябрь 9, 2011 в 21:33
end

 

Изменено пользователем liner

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как проверить, что НПС принадлежит скваду?

Спойлер

function npc_death_by_monster(victim,who) --вызывается из xr_motivator.script (условие if IsMonster(who) then)
    if not string.find(victim:section(),"sim_default") or get_object_story_id(victim:id())~=nil then --квестовик
        return
    end
    local squad_sender = get_object_squad(victim)
    local monster_squad = get_object_squad(who)
    if not squad_sender or not monster_squad then --ТУТ ПРОБЛЕМА
        log("STOP1")
        return
    end
    if not news_text.can_send_help_message(squad_sender:get_squad_community()) or not news_text.can_send_help_message(victim:character_community()) then
        log("STOP2")
        return
    end
    if not xr_conditions.squad_exist(nil,nil,{squad_sender:section()}) then --если отряд мёртв или не существует
        log("STOP3")
        return
    end

........

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, liner сказал:

Как проверить, что НПС принадлежит скваду?

local se_npc        = alife():object(npc:id())
if     se_npc.group_id ~= 65535 then


Терпение... И все получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 31.10.2021 в 23:38, vader_33 сказал:

Paradox27kms 

  Показать контент

 

а как без скрипта перед глазами конкретно писать? Диванная ванга в отпуске

В ui_mm_mod:AddItemToListOther(item_name) (или что там добавляет в self.list_other) добавить аргументом секцию, которая в него передается ui_mm_mod:AddItemToListOther(item_name, sect) и ниже в эту функцию добавить 

self.sect_item = sect

 



function ui_mm_mod:OnButton_list_other_clicked()
    if self.list_other:GetSize()==0 then return end

    local item = self.list_other:GetSelectedItem()	 
	 	if item == nil then
			return
		end
	 
	self.list_other:RemoveItem(item)
	local section = item.sect_item

	local obj = db.actor:object(section)
		if obj then
			local sobj = alife():object(obj:id())
			alife():release(sobj, true)
		end
end

 

 

 

 

 

Я столкнулся с такой проблемой что в компонентах у меня вместо русских букв отображаются кракозябры. Я заметил что данный артефакт только в моём скрипте, я пробовал писать таким методом в ПЫСовских менюшках (скриптах) self.combo_weapons:SetText("Выбрать") и там всё как положенно а в моём скрипте отображаются кракозябры

ss_user_11-05-21_10-14-24_(jupiter_underground).jpg


Дополнено 36 минуты спустя
В 31.10.2021 в 23:38, vader_33 сказал:

Paradox27kms 

  Скрыть контент

 

а как без скрипта перед глазами конкретно писать? Диванная ванга в отпуске

В ui_mm_mod:AddItemToListOther(item_name) (или что там добавляет в self.list_other) добавить аргументом секцию, которая в него передается ui_mm_mod:AddItemToListOther(item_name, sect) и ниже в эту функцию добавить 

self.sect_item = sect

 



function ui_mm_mod:OnButton_list_other_clicked()
    if self.list_other:GetSize()==0 then return end

    local item = self.list_other:GetSelectedItem()	 
	 	if item == nil then
			return
		end
	 
	self.list_other:RemoveItem(item)
	local section = item.sect_item

	local obj = db.actor:object(section)
		if obj then
			local sobj = alife():object(obj:id())
			alife():release(sobj, true)
		end
end

В первом случае если я правильно понял нужно прописать так?

Спойлер

function ui_mm_mod:AddItemToListOther(item_name, sect)
     local _itm = mod_main_menu(22)
     _itm.text:SetText(item_name)
     self.list_other:AddExistingItem(_itm)
         self.sect_item = sect
end

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, Paradox27kms сказал:

Я столкнулся с такой проблемой что в компонентах у меня вместо русских букв отображаются кракозябры. Я заметил что данный артефакт только в моём скрипте, я пробовал писать таким методом в ПЫСовских менюшках (скриптах) self.combo_weapons:SetText("Выбрать") и там всё как положенно а в моём скрипте отображаются кракозябры

ss_user_11-05-21_10-14-24_(jupiter_underground).jpg


Дополнено 36 минуты спустя

 

Весь текст пиши в text/rus, а потом делай на ссылку на него из скриптов. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
4 минуты назад, Neptun сказал:

Весь текст пиши в text/rus, а потом делай на ссылку на него из скриптов. 

Знать бы как, привести бы пример... желательно со взаимодействием с компонентом combo_box ну или list_box, просто секции в самом выпадающем списке да беру из text/rus а вот с шапкой так не работает

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
19 минут назад, Paradox27kms сказал:

Знать бы как, привести бы пример... желательно со взаимодействием с компонентом combo_box ну или list_box, просто секции в самом выпадающем списке да беру из text/rus а вот с шапкой так не работает

Почему не работает? Там, где написан текст словами, заменяешь на ссылку. Метод, по-моему, един для всего. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, Neptun сказал:

Почему не работает? Там, где написан текст словами, заменяешь на ссылку. Метод, по-моему, един для всего. 

К сожалению нет, я тоже так думал. Ссылка будет отображаться в шапке только на англ(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 минут назад, Paradox27kms сказал:

К сожалению нет, я тоже так думал. Ссылка будет отображаться в шапке только на англ(

Покажи часть этого кода, где делается ссылка на текст. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, Neptun сказал:

Покажи часть этого кода, где делается ссылка на текст. 

self.combo_weapons:SetText("game type") -- шапка и пример текста из text/rus
self.combo_weapons:AddItem("ui_inv_pistols",                      1)
self.combo_weapons:AddItem("ui_inv_shotguns",                     2)
self.combo_weapons:AddItem("ui_inv_rifles",                       3)
self.combo_weapons:AddItem("ui_inv_sniper_rifles",                4)
self.combo_weapons:AddItem("ui_inv_heavy_weapons",                5)
self.combo_weapons:AddItem("ui_ammo_types",                       6)
self.combo_weapons:AddItem("ui_inv_outfit_fire_wound_protection", 7)
self.combo_weapons:AddItem("ui_inv_bleeding",                     ?
self.combo_weapons:AddItem("ui_inv_upgrades",                     9)
end

 

    <string id="game type">
        <text>ТИП ИГРЫ</text>
    </string>

ss_user_11-05-21_13-54-09_(jupiter_underground).jpg

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
25 минут назад, Paradox27kms сказал:

self.combo_weapons:SetText("game type") -- шапка и пример текста из text/rus
self.combo_weapons:AddItem("ui_inv_pistols",                      1)
self.combo_weapons:AddItem("ui_inv_shotguns",                     2)
self.combo_weapons:AddItem("ui_inv_rifles",                       3)
self.combo_weapons:AddItem("ui_inv_sniper_rifles",                4)
self.combo_weapons:AddItem("ui_inv_heavy_weapons",                5)
self.combo_weapons:AddItem("ui_ammo_types",                       6)
self.combo_weapons:AddItem("ui_inv_outfit_fire_wound_protection", 7)
self.combo_weapons:AddItem("ui_inv_bleeding",                     ?
self.combo_weapons:AddItem("ui_inv_upgrades",                     9)
end

 

    <string id="game type">
        <text>ТИП ИГРЫ</text>
    </string>

ss_user_11-05-21_13-54-09_(jupiter_underground).jpg

Пробуй так:
 

self.combo_weapons:TextControl():SetText(game.translate_string("game_type")

Без пробела!! А только нижнее подчёркивание, в text исправь

Изменено пользователем Neptun
  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
16 минут назад, Neptun сказал:

Пробуй так:
 


self.combo_weapons:TextControl():SetText(game.translate_string("game_type")

Без пробела!! А только нижнее подчёркивание, в text исправь

Я понял но к сожалению не работает ловлю вылет( пример

self.combo_weapons:TextControl():SetText(game.translate_string("ui_inv_pistols")

или есть простой вариант сделать уже выбранный раздел? хотябы просто как текст

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Paradox27kms сказал:

self.combo_weapons:TextControl():SetText(game.translate_string("ui_inv_pistols")

это только пример с незакрытой скобкой или и в скрипте она не закрыта?


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 минут назад, vader_33 сказал:

это только пример с незакрытой скобкой или и в скрипте она не закрыта?

Приветствую, для меня в приоритете немножечко другое...вернемся к списку и секциям я всё сделал как Вы сказали но не понял в одном. Про добавление в список Вы это имели введу?

Спойлер

function ui_mm_mod:AddItemToListOther(item_name, sect)
     local _itm = mod_main_menu(22)
     _itm.text:SetText(item_name)
     self.list_other:AddExistingItem(_itm)
         self.sect_item = sect
end

 


Дополнено 44 минуты спустя
2 часа назад, Neptun сказал:

Пробуй так:
 


self.combo_weapons:TextControl():SetText(game.translate_string("game_type")

Без пробела!! А только нижнее подчёркивание, в text исправь

Нужно было попробовать так:

Спойлер

self.combo_weapons:SetText(game.translate_string("ui_inv_pistols"))

Но всё ровно большое спасибо

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите функцию для установления заданного значения времени в игре, только через скрипт, а не логику. Желательно с небольшим примером как использовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms 

Спойлер

 

блин, был же скрипт целиком, найти не могу. В классе самого листбокса в __init секция обозначена как переменная? Я уже не помню, что там было. Например, в ui_load_dialog.script 

class "load_item" (CUIListBoxItem)

function load_item:__init(height) super(height)
    self.file_name        = "filename"

 

добавить переменную для секции сюда  self.sect_item = sect, и сюда же ее передавать когда делаете  local _itm = mod_main_menu(22, секция) (естественно, в сам init не забыть добавить в скобках аргументом секцию). Например, 

function load_item:__init(height,sec) super(height,sec)

self.sect_item = sect

Если затрагиваются разные функции - выкладывайте все время весь скрипт (или функции, которые затрагивают выложенный кусок скрипта), никак не узнать правильно ли там что-то вписано и вписано ли что-то вообще, а от этого зависит точность ответов на вопрос

 

 

  • Лайк 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
48 минут назад, vader_33 сказал:

Paradox27kms 

  Скрыть контент

 

блин, был же скрипт целиком, найти не могу. В классе самого листбокса в __init секция обозначена как переменная? Я уже не помню, что там было. Например, в ui_load_dialog.script 

class "load_item" (CUIListBoxItem)

function load_item:__init(height) super(height)
    self.file_name        = "filename"

 

добавить переменную для секции сюда  self.sect_item = sect, и сюда же ее передавать когда делаете  local _itm = mod_main_menu(22, секция) (естественно, в сам init не забыть добавить в скобках аргументом секцию). Например, 

function load_item:__init(height,sec) super(height,sec)

self.sect_item = sect

Если затрагиваются разные функции - выкладывайте все время весь скрипт (или функции, которые затрагивают выложенный кусок скрипта), никак не узнать правильно ли там что-то вписано и вписано ли что-то вообще, а от этого зависит точность ответов на вопрос

 

 

Спасибо, теперь всё хорошо, правда немножечко забагованно всё ровно но всё же это хоть что-то (некоторые предметы не исчезают если массово кликать). А можно ли как-нибудь реализовать чтобы в списке с предметом через запятую отображалась его цена? ну например список:

Спойлер

ПМм, 500

АК-74, 1000

Гадюка-5, 700

Реализация должна быть по идее что-то типо того на мой взгляд

Спойлер

local name = game.translate_string(system_ini():r_string(sect, "inv_name"))

параметр "inv_name" это имя предмета или оружия, тогда можно по логике и дописать параметр "cost" тобишь цена ну и ещё нужно как-то скриптово зарегать запятую, но это только пол дела остальное я не знаю(

пока в голову лезет такое

             local name = game.translate_string(system_ini():r_string(sect, cost, "inv_name", "cost"))
             self:AddItemToListOther(name, sect, cost)

регистрация запятой

self.list_other:TextControl():SetText(section .. "," .. cost)

но так у меня GUI окошко само не отображается так что это просто нужно грамотно реализовать

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
6 часов назад, Paradox27kms сказал:

local name = game.translate_string(system_ini():r_string(sect, cost, "inv_name", "cost"))

по одному параметру читается, для цены отдельно переменную с r_string надо делать

6 часов назад, Paradox27kms сказал:

self.list_other:TextControl():SetText(section .. "," .. cost)

это откуда выполняется?


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, vader_33 сказал:

по одному параметру читается, для цены отдельно переменную с r_string надо делать

это откуда выполняется?

Можно плиз рабочий пример?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms 

6 часов назад, Paradox27kms сказал:

local name = game.translate_string(system_ini():r_string(sect, "inv_name"))

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


Дополнено 0 минут спустя

Paradox27kms и без game.translate_string


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
10 минут назад, vader_33 сказал:

Paradox27kms 

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


Дополнено 0 минут спустя

Paradox27kms и без game.translate_string

Последний вопрос) (я уже понимаю что скорее всего Вас достал) но тем не менее осталось сделать главное это реализовать чтобы при удалении предмета из списка срабатывал скрипт, ну в моем случае нужно чтобы сработал скрипт к примеру выдачи денег ГГ стоимости предмета

вот такой скрипт не подойдет так как это для конкретных строк а у меня секции рандомные т.е предметы из рюкзака...

Спойлер

     if item == 1 then

        return
     end

     if item == 2 then

        return
     end

 

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms выдавать деньги там же, где и удаляете. Там как раз секция предмета уже получается в функции, и через r_string читаете цену


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
51 минуту назад, vader_33 сказал:

Paradox27kms 

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


Дополнено 0 минут спустя

Paradox27kms и без game.translate_string

Я пока только понял так:

Спойлер

function ui_mm_mod:FillListOther()         
         local name
         local cost

         db.actor:iterate_inventory(function (tmp, item)
     local sect = item:section()
         if tbl[sect] then
             local name = game.translate_string(system_ini():r_string(sect, "inv_name"))
             local cost = r_string(sect, "cost"))
             self:AddItemToListOther(name, cost, sect)
         end                            
       end,obj)
end

и к тому же нужно зарегать запятую в списке а я хз как. Хочу чтобы список был реализован такими секциями например

АК-742у, 900 RU

ПМм, 500 RU

Гадюка-5, 700 RU

 

Изменено пользователем Paradox27kms

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms 

local inv_name = game.translate_string(system_ini():r_string(sect, "inv_name"))
local cost = system_ini():r_string(sect, "cost")
local name = inv_name..", "..cost
self:AddItemToListOther(name, cost, sect)

 


Дополнено 7 минуты спустя

Paradox27kms 

Спойлер

 

36 минут назад, Paradox27kms сказал:

 local name
  local cost

 

36 минут назад, Paradox27kms сказал:

  local name = game.translate_string(system_ini():r_string(sect, "inv_name"))
 local cost = r_string(sect, "cost"))

если один раз есть local что-то, второй раз не надо писать local, просто  name =.... Отдельно  local name обозначать в начале лучше только в случаях, когда несколько вариантов назначения name, в зависимости от условия. Если только одно условие назначения, и сразу же в этом условии происходит какое-то действие с этой переменной, то в начале функции  local name писать не нужно.

Либо так

function ui_mm_mod:FillListOther()         
         local name
         local cost

         db.actor:iterate_inventory(function (tmp, item)
     local sect = item:section()
         if tbl[sect] then
             name = game.translate_string(system_ini():r_string(sect, "inv_name"))
            cost = r_string(sect, "cost"))

             self:AddItemToListOther(name, cost, sect)
         end                            
       end,obj)
end

Либо так

function ui_mm_mod:FillListOther()         
         db.actor:iterate_inventory(function (tmp, item)
     local sect = item:section()
         if tbl[sect] then
             local name = game.translate_string(system_ini():r_string(sect, "inv_name"))
             local cost = r_string(sect, "cost"))
             self:AddItemToListOther(name, cost, sect)
         end                            
       end,obj)
end

 

Изменено пользователем vader_33
  • Аплодисменты 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 часов назад, vader_33 сказал:

Paradox27kms 


local inv_name = game.translate_string(system_ini():r_string(sect, "inv_name"))
local cost = system_ini():r_string(sect, "cost")
local name = inv_name..", "..cost
self:AddItemToListOther(name, cost, sect)

 


Дополнено 7 минуты спустя

Paradox27kms 

  Скрыть контент

 

 

если один раз есть local что-то, второй раз не надо писать local, просто  name =.... Отдельно  local name обозначать в начале лучше только в случаях, когда несколько вариантов назначения name, в зависимости от условия. Если только одно условие назначения, и сразу же в этом условии происходит какое-то действие с этой переменной, то в начале функции  local name писать не нужно.

Либо так

function ui_mm_mod:FillListOther()         
         local name
         local cost

         db.actor:iterate_inventory(function (tmp, item)
     local sect = item:section()
         if tbl[sect] then
             name = game.translate_string(system_ini():r_string(sect, "inv_name"))
            cost = r_string(sect, "cost"))

             self:AddItemToListOther(name, cost, sect)
         end                            
       end,obj)
end

Либо так

function ui_mm_mod:FillListOther()         
         db.actor:iterate_inventory(function (tmp, item)
     local sect = item:section()
         if tbl[sect] then
             local name = game.translate_string(system_ini():r_string(sect, "inv_name"))
             local cost = r_string(sect, "cost"))
             self:AddItemToListOther(name, cost, sect)
         end                            
       end,obj)
end

 

Благодарю. Только в строке 

self:AddItemToListOther(name, cost, sect) - cost лишнее. И ещё не понятен момент с выдачей денег.

Спойлер

function ui_mm_mod:OnButton_list_other_clicked()
    if self.list_other:GetSize()==0 then return end

    local item = self.list_other:GetSelectedItem()     
         if item == nil then
            return
        end
     
    self.list_other:RemoveItem(item)
    local section = item.sect_item

    local obj = db.actor:object(section)
        if obj then
            local sobj = alife():object(obj:id())
            alife():release(sobj, true)
        end
end

Вот как это вижу я. Не понимаю как реализовать чтобы было взаимодействие с ценой и секцией чтобы при удалении выдавалась энная сумма, в данном случае цены предмета

Спойлер

function ui_mm_mod:OnButton_list_other_clicked()
    if self.list_other:GetSize()==0 then return end

    local item = self.list_other:GetSelectedItem()     
         if item == nil then
            return
        end
     
    self.list_other:RemoveItem(item)
    local section = item.sect_item

    local obj = db.actor:object("mp_wpn_pm")
        if obj then
            relocate_item_to_actor и.т.д
        end
end

 


Дополнено 34 минуты спустя
21 час назад, Contentic сказал:

Подскажите функцию для установления заданного значения времени в игре, только через скрипт, а не логику. Желательно с небольшим примером как использовать

В Повелителе Зоны есть вроде то что тебе нужно

Изменено пользователем Paradox27kms
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн