Теперь простой пример, который я сделал для ящика
"Содержимое файла my_cool_binder.script"
Код
function init(obj)
local new_binder = my_binder(obj)
obj:bind_object(new_binder)
end class "my_binder" (object_binder)
function my_binder:__init(obj) super(obj)
get_console():execute("my_binder:__init")
end
function my_binder:reload(section)
get_console():execute("my_binder:reload")
object_binder.reload(self, section)
end
function my_binder:reinit()
get_console():execute("my_binder:reinit")
object_binder.reinit(self)
self.object:set_callback(callback.use_object, self.use_callback, self)
end
function my_binder:update(delta)
local actor_pos = db.actor:position()
local obj_pos = self.object:position()
local dist = actor_pos:distance_to(obj_pos)
get_console():execute("my_binder:update_dist="..dist.."_delta="..delta)
object_binder.update(self, delta)
end
function my_binder:net_spawn(data)
get_console():execute("my_binder:net_spawn")
return object_binder.net_spawn(self, data)
end
function my_binder:net_destroy()
get_console():execute("my_binder:net_destroy")
object_binder.net_destroy(self)
end
function my_binder:net_save_relevant()
get_console():execute("my_binder:net_save_relevant")
return true
end
function my_binder:save(packet)
get_console():execute("my_binder:save")
object_binder.save(self, packet)
end
function my_binder:load(reader)
get_console():execute("my_binder:load")
object_binder.load(self, reader)
end
function my_binder:use_callback(obj, who)
get_console():execute("my_binder:use_callback")
end
кроме того в файле gamedata\config\misc\devices.ltx
добавил новую секцию
Код
[inventory_box_my]:inventory_box
script_binding = my_cool_binder.init
это будет ящик с визуалом ящика с динамитом с одним только отличием от стандартного - у него будет нестандартный наш биндер.