Перейти к контенту

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

@Pir@t@s вообще, можно отбиндить соотв. кнопки. Но если

1 hour ago, Pir@t@s said:

знание скриптов 0

то я бы посоветовал "ох, не ходил бы ты туда, Стрелок".

 

Вот скрипт, который делает "поломку" ПДА с помощью отбиндивания кнопок: https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_broken_pda.script

Правда я сомневаюсь, что это тебе поможет.

 

  • Спасибо 1
Ссылка на комментарий
В 07.11.2017 в 12:36, sv6o6o9a сказал:

attempt to index local 'spawn_smart' (a nil value)

ЗП не моя платформа, но могу предположить навскидку, что, например, вместе с НПС удалены также и смарты, из-за чего симуляционный скрипт и не может найти какой-то смарт в своей временной таблице.

Кроме того, имеет смысл проверить и почистить конфиг "configs\misc\simulation.ltx", ведь в нём вполне могли остаться строки, соответствующие удалённым объектам.

  • Согласен 1
Ссылка на комментарий

@Kirgudu достаточно как раз вычистить этот самый simulation.ltx. Еще можно пройтись поиском и убрать из кастом даты смартов респавн сквадов неписей и мобов или же просто потереть эти смарты из спавна. В любом случае, simulation.ltx чистить нужно.

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

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий
2 часа назад, BoBaH_671 сказал:

@Kirgudu достаточно как раз вычистить этот самый simulation.ltx. Еще можно пройтись поиском и убрать из кастом даты смартов респавн сквадов неписей и мобов или же просто потереть эти смарты из спавна. В любом случае, simulation.ltx чистить нужно.

теперь такой лог

Expression    : fatal error
Function      : CInifile::r_section
File          : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp
Line          : 475
Description   : <no expression>
Arguments     : Can't open section 'amk_metka'. Please attach [*.ini_log] file to your bug report

Ссылка на комментарий

Можно ли скриптом "повесить" актора в пространстве? Чтоб он завис в воздухе.

Пробовал делать через "db.actor:set_actor_position( ... точка в пространстве ... )",

и обновлять через апдейт - в результате камеру "колбасит не по-детстки".

Можно конечно, что-нибудь спавнить под актором и фиксировать, но это не то.

Есть варианты? Именно скриптом.

Ссылка на комментарий
3 часа назад, Shkiper2012 сказал:

Можно ли скриптом "повесить" актора в пространстве? Чтоб он завис в воздухе.

Пробовал делать через "db.actor:set_actor_position( ... точка в пространстве ... )"

set_actor_position не точно устанавливает позицию актора. 

Если ЗП, можешь раз установить позицию(не на апдейте) и выключить гравитацию : level.physics_world():set_gravity(0). 

Если ТЧ(исходники), можешь перенести метод set_gravity из ЗП. 

А я для ТЧ xray extensions, с помощью m_netpk спавнил под актором невидимую плоскость и фиксировал. Вот : 

 

Изменено пользователем TIGER_VLAD
  • Нравится 1
  • Полезно 1
Ссылка на комментарий

Коллеги, доброго времени суток.

В этой теме уже встречался данный вопрос, но остался без ответа - каким образом зарегистрировать callback от кнопки, чтобы он таки заработал, если сама кнопка помещена в CUIScrollView? Сколько вариантов не перепробовал - все одно, не вызывается (CoP)

Ссылка на комментарий

@Faustle , в окно главного меню добавил скроллвью и в него две кнопки - всё работает.

	self.scroll = xml:InitScrollView("scroll", self) -- скролл
	self.btn1 = xml:Init3tButton("btn1", nil) --кнопка1
	self:Register (self.btn1, "btn1")
	self.btn2 = xml:Init3tButton("btn2", nil) --кнопка2
	self:Register (self.btn2, "btn2")
	self.scroll:AddWindow(self.btn1, true) -- добавляем кнопки в скролл
	self.scroll:AddWindow(self.btn2, true)
	self:AddCallback("btn1", ui_events.BUTTON_CLICKED, function() log("bnt1_down") end) -- ставим колбеки
	self:AddCallback("btn2", ui_events.BUTTON_CLICKED, function() log("bnt2_down") end)

 

  • Нравится 1
Ссылка на комментарий
8 hours ago, Charsi said:

@Faustle , в окно главного меню добавил скроллвью и в него две кнопки - всё работает.

 

Странно, но, в любом случае, большое спасибо, значит моя проблема в реализации. Буду разбираться. Движок, с которым я работаю не совсем CoP - CoC 1.4.22, но изменений в GUI классах, судя по исходникам, не было. Единственный момент, который приходит в голову - что-то не так с аттачем дочернего CUIWindow, в котором размещена кнопка.

Ссылка на комментарий

Вот что значит, по ночам писать вредно... Просмотрел закомментированную строку, хотя проверял и переписывал все несколько раз.

Все работает, вопрос снят.

  • Смешно 1
Ссылка на комментарий

Господа, выручайте. Наткнулся на самую настоящую для моих мозгов аномалию! В общем, написал я небольшой таймер

Скрытый текст
local time_news = 10
local time_m = 1
local time_h = time_m * 60
local time_d = time_h * 24
local rnd = math.random

function time_update_spam()
local iTimer = amk.game_minutes()
      iTimer = amk.game_minutes() + math.random(time_h, time_d) --как только грузанулись взвелся таймер, рандом от часа до дня ИГРОВОГО
      -- далее функция ожидания истечения таймера--
      local function check_timer()
         return amk.game_minutes() > iTimer
      end
      -- ставим её на апдейт
      level.add_call(check_timer, action_timer)
end
 
function action_timer()
   if time_news < amk.game_minutes() then  
     time_news = amk.game_minutes() + rnd(time_d) -- время через которое будет вызываться сообщение
 news_main.do_RANDOM_NEWS()  --функция, которую мне нужно вызывать с некоторым промежутком времени
-- amk.send_tip( "заголовок", "таймер истёк", 1, 15, "common_channel")
    end
end

Сама функция таймера "time_update_spam()"у меня вызывается из скрипта bind_stalker - функции actor_binder:update(delta)

И все великолепно работает, таймер исправно запускает функции через отведённое время. Но вот проблема. Падает фпс! Как только загрузился - от 60 до 100 фпс. Через 5 минут реального времени всегда фпс падает до 10. Именно из-за таймера. Или функции, которую он вызывает, не знаю. Стоит только закомментить в Бинд_Сталкере строчку с вызовом функции таймера и перезагрузить игру как фпс снова возвращается на былые значения. Что это может быть?

Изменено пользователем Kirgudu
Добавлено Kirgudu,

Пункт 2.0 правил форума, устное предупреждение.

Ссылка на комментарий

@_Sk8_AsTeR_ вероятно потому, что на каждом апдейте ты делаешь новый level.add_call(). Вообще не понятно, зачем тебе все так сложно. Вызывай из апдейта сразу action_timer. Ведь там же есть проверка, наступило нужное время или нет.

Ссылка на комментарий

@_Sk8_AsTeR_ level.add_call() - по сути callback. Ее не нужно самому ставить на апдейт, это делается движком. Фактически, функция работает следующим образом - ты вызываешь level.add_call, с первым аргументом в виде функции, которая будет вызываться до тех пор, пока не вернет true, после чего произойдет вызов второго аргумента. В твоем случае, получается рекурсивный вызов функции - отсюда и тормоза системы.

  • Полезно 1
Ссылка на комментарий

@dsh @Faustle Спасибо за подсказки. Следуя вашим советам столкнулся с новой проблемой: таймер между вызовом моей функции работает. Однако первичный вызов функции происходит без задержки, моментально. А это мне не подходит. То есть как только я гурзанул сейв сразу вызывается моя функция, и только после этого заводится таймер. Как можно вызвать задержку на выполнение ф-ции?

Ссылка на комментарий

В продолжение  своей проблемы

Исходя из информации, полученной выше от ребят, получается мы имеем вызов моей функции action_timer() из bind_stalker из ф-ции actor_binder:update(delta). Значит моя ф-ция автоматически обновляется. Тогда вопрос, что я делаю не так?

Скрытый текст

local time_news = 0
local iTimer = 0

function action_timer()
time_news = amk.game_minutes() + 2
   if time_news < amk.game_minutes() then  
   news_main.do_RANDOM_NEWS()
    end 
end

Ведь по идее, исходя из это, мой скрипт должен работать следующим образом: объявленной переменной time_news присваивается значение - игровое время + 2 минуты. И если эта переменная меньше чем игровое время в данный момент, то выполняется другая основная моя ф-ция do_RANDOM_NEWS(). И того выходит, что после загрузки сейва через 2 минуты игрового времени должна непрерывно начать постоянно вызываться моя основная ф-ция do_RANDOM_NEWS(), но этого не происходит. Оказывается почему-то что всегда переменная time_news перманентно больше игрового времени в данный момент. Как так?

 

Изменено пользователем _Sk8_AsTeR_
Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...