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

Скриптование


Svoboда

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

@Simonov50, метод работает именно так - set(x, y, x+width, y+height).

Т.е. если сначала ширина активной области окна была 420-0 = 420, то потом стала 420-200 = 220. И всё, что уехало правее 420 - уже не активно.

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


Ссылка на сообщение

@Zander_driver, с помощью level.client_spawn_manager():add( object_id, 0, spawn_callback ). Колбек на выход в онлайн вызывается после возможного binder:net_spawn(), поэтому на момент вызова уже будет известно, забинден ли объект.

Проверка в движке всё же есть, но без обрушения игры.

 

 

	luabind::functor<void>	lua_function;
	if (!ai().script_engine().functor(pSettings->r_string(section,"script_binding"),lua_function)) {
		ai().script_engine().script_log	(ScriptStorage::eLuaMessageTypeError,"function %s is not loaded!",pSettings->r_string(section,"script_binding"));
		return;
	} 

 

 

 

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


Ссылка на сообщение

@Zander_driver, string.find вторым аргументом принимает шаблон. Шаблон "." означает любой символ. Чтобы получить просто символ точки, её нужно экранировать вот так "%."

 

Вообще может имеет смысл использовать gmatch?

local ammo_return = {}
for sName in ammo_list:gmatch("([^%"..border_symbol.."]+)") do
	table.insert(ammo_return, sName)
end
Изменено пользователем Charsi
  • Спасибо 1
  • Согласен 1

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


Ссылка на сообщение

@Romz, в таблице p_coord нет элементов с индексами "x" и "y". Напиши так

                    local Xcoord = p_coord[1]
                    local Ycoord = p_coord[2]
Изменено пользователем Charsi
  • Спасибо 1
  • Полезно 1

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


Ссылка на сообщение

@Nazgool, в функциях с неявным числом аргументов локальная таблица arg создается автоматически.

Функция bind_member от bind_function по сути ничем не отличается.

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


Ссылка на сообщение

@Zander_driver, можно для объекта алайфа переопределить методы create и release своими функциями, в которые, например, добавить триггеры соответствующих событий.

local sim = alife()

sim._create = sim.create
sim.create = function(self, section,...)
	get_console():execute("load ~sim~create:"..section)
	return sim._create(self, section,...)
end

sim._release = sim.release
sim.release = function(self, sobj)
	get_console():execute("load ~sim~release:"..sobj:section_name())
	sim._release(self, sobj)
end

_G.alife = function() return sim end

 

 

  • Полезно 1

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


Ссылка на сообщение

@Romz, с помощью функции level.vertex_position(lv_id) ты можешь получить позицию левел-вертекса только на текущей локации.

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

  • Согласен 1
  • Полезно 1

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


Ссылка на сообщение

@FonSwong, захватываем всё, что после первого пробела и не относится к пунктуации.

local s = "! Волк, где ты?"
print(s:match("%s(%P*)")) --> печатает 'Волк'

@Serge!, продолжай.  :D

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

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


Ссылка на сообщение

Вообще это две разные функции - конструктор без параметров и конструктор копирования класса CScriptEntityAction. Содержание у них конечно разное.

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


Ссылка на сообщение

@vampirnik77, в методе setString с помощью функции _parse_custom_data переданная строка преобразуется в таблицу. Твоё bla превращается в пустую таблицу, т.к. строка для кастомдаты должна иметь вид, подобный ini-файлу, т.е. набор секций с параметрами и значениями. Можно было написать, например, так:

local bla = "[my_data]\nkgsdglsgmsmgksgnbmsdjngsgmsko"
Изменено пользователем Charsi
  • Спасибо 1

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


Ссылка на сообщение

@Winsor, в движке, который ты используешь, класс CClimableObject экспортирован? Просто cs_register хочет вторым аргументом идентификатор экспортированного клиентского класса, а в оригинале экспортирован лишь серверный класс cse_alife_object_climable.

  • Спасибо 1

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


Ссылка на сообщение

@CRAZY_STALKER666, игра не может подгрузить файл Deshifrator.script, т.к. он сохранён в кодировке "UTF-8 BOM". Нужно использовать кодировки "ANSI" или "UTF-8 без BOM".

Изменено пользователем Charsi
  • Нравится 1
  • Полезно 2

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


Ссылка на сообщение

@Kondr48, можно добавить в класс окна метод обновления.

function class_name:Update()
	CUIScriptWnd.Update(self)

	local h = level.get_time_hours()
	local m = level.get_time_minutes()
	self.st_time:SetText(string.format("%02d:%02d", h, m))
end
  • Спасибо 1
  • Полезно 1

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


Ссылка на сообщение

Обновление окна вызывается только когда оно открыто и поэтому для продолжения воспроизведения плееру нужен апдейт игры.

  • Согласен 1

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


Ссылка на сообщение

@Kondr48, так как точка в строке одна, то для gsub можно указать количество замен - str:gsub("%.", "", 1).

Изменено пользователем Charsi
  • Полезно 1

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


Ссылка на сообщение

На практике подмена параметра owner_id не работает, кроме того аномалия может сработать и на нести урон нпс до перепрошивки. А вот переспавн работает просто идеально.

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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