Пользователей: 0
Гостей: 511
Всего: 511

» Подробно
» Сегодня

Привет, Гость!

» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное





Форумы > Архив > Свалка > Модификации ТЧ, вопросы и ответы (старое, по 14.06.11)

Страница 62 из 63Первая«5960616263 »

 
Автор Сообщение
Gun12
[7] Выживший
    
0
Посты: 773
Откуда: СССР
Возраст: 51
11-06-2011 15:54 GMT3 часа #1490560    
singapur22
Я вчера тоже наловился всяких казусов, когда испытывал подобный код.=)
Чего только не делал. Использовал и всякие нетривиальные решения.
Опыта, видать, пока не хватает.


То, что еле дождался вполне логично.
Ведь эта мететаблица является метаблицей для всех создаваемых классов. А сколько их создаётся в игре?
И все они(ну или та часть, которые создаются после вызова "gaga") используют уже переопределённый метод.
Тоже пока бьюсь, не могу до ума довести.

Тут примерно нужно сделать так :
Код:
class "gaga"

local mg                    = getmetatable(gaga)
local old__index        = mg.__index -- сохранить стандартный метод
local old__newindex = mg.__newindex


function mg:__index(key)
    if <self является объектом класса "gaga"> then -- Вот тут как сделать - тебе виднее.
        get_console():execute(tostring("__index"))  -- вызываем свой метод
        return 0
    else
         old__index()  -- иначе вызываем стандартный метод
    end
end

function mg:__newindex(key, value)
    if <self является объектом класса "gaga"> then
        -- чего то там делаем
    else
         old__newindex()
    end
end

function mg:__len()
    --  свой метод
end

Сообщение было успешно отредактировано Gun12 (11-06-2011 15:54 GMT3 часа, назад)

Не стань номинантом премии Дарвина.
vanek117
[1] Странник
    
0
Посты: 4
Откуда:
Возраст: 29
11-06-2011 15:34 GMT3 часа #1490561    
подскажите как из исполнителя желаний убрать гражданских зомби которые появляются из не откуда в конец достали, заранее спасибо


singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 16:06 GMT3 часа #1490573    
Gun12 Вся проблема в том (ещё один непонятный результат), что при попытке обратиться к self внутри переопределяемого метаметода, получаю вылет с логом...
Сам лог не сохранил. Но перевод его такой: "Ошибка в обработчике ошибок!"


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 16:40 GMT3 часа #1490583    
singapur22 а я думал так, получаем сталкера-убийцу, читаем его параметры, в частности активную пушку, но твой вариант более логичен, потому как если мы получим пушку первого слота, то где гарантия того, что он(киллер) не завалил(жертву) с пушки из второго слота

Только я абсолютно не понял как получить именно пушку, ибо в хит колбек ничего подобного не передается


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 16:49 GMT3 часа #1490584    
Struck Событие хита отлавливает самого киллера, и этого вполне предостаточно. Остаётся только определить активное оружие у киллера в момент хита.
Порядок определения прост:
1. определяем активный слот
local slot = obj:active_slot()
2. определяем оружие находящее в данном слоте
local wpn = obj:item_in_slot(slot)

Сообщение было успешно отредактировано singapur22 (11-06-2011 16:49 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 16:50 GMT3 часа #1490588    
singapur22 а, ясно, а как определить наступила ли смерть?


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 16:58 GMT3 часа #1490592    
Struck На то есть соответствующий колбэк.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 17:07 GMT3 часа #1490594    
singapur22 это то само собой, так алгоритм то какой? Раз ты говоришь в хит колбек передавать...можно же сразу в death_callback передать эту функцию, и узнаем пушку


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 17:14 GMT3 часа #1490595    
Struck Можно и без хита. Но... Нет никакой уверенности, что убирание оружия у киллера не сработает раньше его определения. Правда это уже исключительный случай, и больше зависит от расположения кода.
Короче делай как сам считаешь нужным. Это уже подробности, которые ты должен решить сам, иначе в скрипте придётся писать автором не себя, а того, кто действительно его написал.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 18:30 GMT3 часа #1490619    
singapur22 как скрыть кнопку?...надо в таком виде, подходящего метода не нашел,как применить Show(boolean)?(если он здесь уместен)

Код:
function ui_dd:blabla()
--действие
--скрываем эту кнопку
end


добавлено спустя 6 минут

и да, мне надо чтобы она появлялась тоже по условию, это условие в каком месте прописывать?

Сообщение было успешно отредактировано Struck (11-06-2011 18:30 GMT3 часа, назад)

Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 19:44 GMT3 часа #1490649    
Struck А как ты сам думаешь? Собственно, ещё вчера рассматривали классы и их методы. Правда забыли упомянуть о свойствах объектов. Свойства объектов, это некоторые переменные привязанные к самим объектам класса. Например:
Код:
class "gaga"

function gaga:__init()
    self.prop1 = 8
    self.prop2 = 0
end

function gaga:blabla(xxx)
    self.prop2 = self.prop1 * xxx
end

self.prop1 и self.prop2 здесь будут являться свойствами каждого объекта данного класса.
Обрати внимание на то, что свойства мы можем вызывать абсолютно в любом месте класса.
А теперь сам подумай, как сделать, чтобы к кнопке можно было обратиться из твоей "блабла".

Есть ещё один способ. Через методы SetWindowName(имя) и WindowName(). Но он немного не удобен.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 20:38 GMT3 часа #1490670    
каким классом можно сделать шаблон для текстов? Делал CUIListItemEx, но там не работает complex_mode


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 20:44 GMT3 часа #1490671    
Struck В смысле???


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 20:51 GMT3 часа #1490672    
singapur22 ну просто пишем класс куда только передаем координаты и выводим скролбар, я сделал так
Код:
class "text" (CUIListItemEx)

function text:__init(x, y, width, height) super()
self:SetWndRect (x, y, width, height)
self:InitTexture("ui\\ui_scb_scroll_box")
        self:SetStretchTexture(true)
end


И вывожу в свой листинг так:

Код:
local item = text(0, 0, 100, 50)
item:SetText("текст")


В настройках ясное дело указываю complex_mode = "1", но он, увы, не работает


Снова в строю.

l
Ma$ter
[1] Странник
    
0
Посты: 477
Откуда: Tamboff
Возраст:
11-06-2011 21:16 GMT3 часа #1490677    
Artos
Прочу простить, вчера был на взводе. Вот что у меня написано

Есть следующий класс:
Код:
class "log_checker_full" (CUIScriptWnd)
function log_checker_full:__init() super()
self:InitControls()
self:InitCallBacks()
end

function log_checker_full:__finalize()
end

local logic
function log_checker_full:InitControls()
    self:Init(0,0,891,643)
local xml = CScriptXmlInit()
xml:ParseFile("ui_log_checker.xml")
.....
       self.btn_logic_maker=xml:Init3tButton("log_checker_full:btn_logic_maker", self)
self:Register(self.btn_logic_maker, "btn_logic_maker")
self.stalker_ed_logic = xml:InitEditBox("log_checker_full:stalker:edit_box_logic", self)
.....
end

Мог бы выложить код полностью, но там только функция InitControls() занимает 80 строк

Код:
function log_checker_full:InitCallBacks()
self:AddCallback("btn_logic_maker", ui_events.BUTTON_CLICKED, self.logic_maker, self)
end


Потом при нажатии на кнопку вызываю таким образом еще один класс:
Код:
function log_checker_full:logic_maker()
local spwn = this.logic_maker(get_hud())
level.start_stop_menu(spwn,true)
end


class "logic_maker" (CUIScriptWnd)
function logic_maker:__init() super()
self:InitControls()
self:InitCallBacks()
end

function logic_maker:__finalize()
bool_c_ed=false
end

function logic_maker:InitControls()
    self:SetWndRect(Frect():set(200,177,1000,1000))
local xml = CScriptXmlInit()
xml:ParseFile("ui_log_checker.xml")
xml:InitStatic("logic_maker:background", self)
xml:InitFrame("logic_maker:frame_list2", self)
self.c_ed=xml:InitStatic("logic_maker:caption", self)

self:Register(xml:Init3tButton("logic_maker:btn_caption", self), "btn_caption")
self:Register(xml:Init3tButton("logic_maker:btn1", self), "btn1")
self:Register(xml:Init3tButton("logic_maker:btn_close", self), "btn_close")
end

function logic_maker:InitCallBacks()
self:AddCallback("btn_caption", ui_events.BUTTON_CLICKED, self.set_c_ed, self)
self:AddCallback("btn1", ui_events.BUTTON_CLICKED, self.save, self)
self:AddCallback("btn_close", ui_events.BUTTON_CLICKED, self.quit, self)
end

function logic_maker:quit()
self:GetHolder():start_stop_menu(self, true)
end

function logic_maker:save()
local t1=positioninformer.log_checker_full()
if t1 then
amk.send_tip(type(t1))
else
log1("1")
end
local t2=t1.stalker_ed_logic
if t2 then
amk.send_tip(type(t2))
else
log1("2")
end
t2:SetText("Custom logic")
amk.send_tip("3_"..t2:GetText("Custom logic"))
logic=self.c_ed:GetText()
self:quit()
end

Но метод текст в функции logic_maker:save() почему то не выставляется

Struck
На счет скрыть кнопку
Я делал так:
self.btn_logic_maker=xml:Init3tButton("log_checker_full:btn_logic_maker", self) --создаем кнопку
self:Register(self.btn_logic_maker, "btn_logic_maker") --регистрируем ее, что бы на нее можно было повесить каллбек

Потом в нужном месте:
self.btn_logic_maker:Show(false) --скрываем
Есть еще методы
self.btn_logic_maker:IsShow() --Скрыта ли кнопка
self.btn_logic_maker:Enable(false) --Деактивировать кнопку. Если применить такой метод, то кнопка останется на виду, но будет серого цвета и не будет реагировать на нажатие
self.btn_logic_maker:IsEnable() --Активирована ли кнопка


Знание assembler, C/C++, Pascal, Lua.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 21:32 GMT3 часа #1490685    
Ma$ter ды я разобрался

а по твоей проблеме, на что ты собственно "садишь" свой текст(Custom logic)? У тебя даже твой эдит бокс не получен


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 21:47 GMT3 часа #1490690    
Struck Класс CUIListItemEx() мультитекст не поддерживает, но это дело всегда можно исправить путём приаттачивания к нему статического виджета, в котором текст и выводить.

Ma$ter Вся проблема в том, что ты обращаешься не к объекту, из которого было запущено второе окно, а создаёшь новый:
local t1=positioninformer.log_checker_full()
Пусть и без его активации.
Если нужно чтобы второе окно возвращало то, или иное значение в первое (из которого оно было запущено), то как минимум нужно объект первого окна, передать во второе:
Код:
class "wind1" (CUIScriptWnd)

function wind1:__init()super()
    ...
    self.edit = ...
    ...
end

function wind1:start_wind2()
    self:GetHolder():start_stop_menu(this.wind2(self), true)
end

Далее, уже во втором окне:
Код:
class "wind2" (CUIScriptWnd)

function wind2:__init(owner)super()
    self.owner = owner
    ...
end

function wind2:set_text_on_win1()
    self.owner.edit:SetText("BlaBla")
    self:quit()
end

Так же, можно сделать чуть-чуть иначе. Путём передачи метода:
Код:
class "wind1" (CUIScriptWnd)

function wind1:__init()super()
    ...
    self.edit = ...
    ...
end

function wind1:start_wind2()
    self:GetHolder():start_stop_menu(this.wind2(self.set_text_edit, self), true)
end

function wind1:set_text_edit(str)
    self.edit:SetText(str)
end

Во втором окне:
Код:
class "wind2" (CUIScriptWnd)

function wind2:__init(method, owner)super()
    self.method = method
    self.owner = owner
    ...
end

function wind2:set_text_on_win1()
    self.method(self.owner, "BlaBla")
    self:quit()
end

Сообщение было успешно отредактировано singapur22 (11-06-2011 21:47 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 21:40 GMT3 часа #1490692    
singapur22 а каким образом приаттачить?...именно что бы получилось универсально(подстановкой текста), обычно то я могу


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 21:45 GMT3 часа #1490694    
Struck А чё, приаттачивание можно делать разными способами? Насколько я знаю, для этого существует только один метод AttachChild(win)


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
11-06-2011 21:59 GMT3 часа #1490699    
singapur22 каким образом, а не каким способом, статический виджет надо заного писать, или брать его уже из своего(базового так скажем) класса, который там и написать?


Снова в строю.

l
singapur22
[10] Житель
    
0
Посты: 2089
Откуда: Рубцовск
Возраст: 44
11-06-2011 22:28 GMT3 часа #1490708    
Struck Если в xml есть тэг статика, удовлетворяющий всем условиям, или есть возможность подправить условия скриптом, то можешь взять уже имеющийся. Если же нет, то создавай новый.

Вот так, например выглядит елемент списка с приаттачиванием на него статика, для вывода двух текстов выравненных по знаку "=" (ключь = значение):
Код:
local item = _ui_total.list_item(200, 27)
item:SetText(txt)
item.section = txt
item.id      = id
item.win_id = self.xml:InitStatic("el_contr_stat", item) --'приаттачиваем статик к элементу списка
item.win_id:SetText("= "..tostring(id))
self.contr_list:AddItem(item)

В твоём случае, выводить текст непосредственно в самом элементе не нужно. Только в статике.

Сообщение было успешно отредактировано singapur22 (11-06-2011 22:28 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
vdv5549
[3] Новобранец
    
0
Посты: 2466
Откуда: Ленинград
Возраст: 50
11-06-2011 23:37 GMT3 часа #1490735    
Всем привет !!! У меня такой вопрос : можно ли интегрировать в какой-либо костюм (экзоскелет) детектор аномалий ???


Не становись на пути десантника, ты рискуешь стать загадкой для хирурга. В.Ф. Маргелов
Gun12
[7] Выживший
    
0
Посты: 773
Откуда: СССР
Возраст: 51
12-06-2011 00:49 GMT3 часа #1490762    
vdv5549
Можно. Конечно если people не против, то лично я разрешаю.


Не стань номинантом премии Дарвина.
vdv5549
[3] Новобранец
    
0
Посты: 2466
Откуда: Ленинград
Возраст: 50
12-06-2011 02:14 GMT3 часа #1490805    
Gun12

Так может разъяснишь, каким образом это сделать ???


Не становись на пути десантника, ты рискуешь стать загадкой для хирурга. В.Ф. Маргелов
Struck
[7] Выживший
    
0
Посты: 1946
Откуда:
Возраст:
12-06-2011 02:19 GMT3 часа #1490806    
vdv5549 со скриптами работал когда-нибудь?...просто есть ли смысл разъяснять алгоритм


Снова в строю.

l
vdv5549
[3] Новобранец
    
0
Посты: 2466
Откуда: Ленинград
Возраст: 50
12-06-2011 02:37 GMT3 часа #1490811    
Struck

Так может просто напишешь в каком скрипте что и после чего прописать ??? Это же вы мастера, а я простой геймер.


Не становись на пути десантника, ты рискуешь стать загадкой для хирурга. В.Ф. Маргелов
Artos
[20] Сталкер
    
0
Посты: 4176
Откуда:
Возраст: 65
12-06-2011 02:46 GMT3 часа #1490815    
- Всем привет! А можно баульчик до гостиницы донести?
- Да, вроде как никто не возражает.
- Так может разъяснишь, каким образом это сделать???
- Сам то таскал когда-нибудь?... просто есть ли смысл разъяснять...
- Так может просто донесешь??? Это же вы носильщики, а я простой турист.
- ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Gun12
[7] Выживший
    
0
Посты: 773
Откуда: СССР
Возраст: 51
12-06-2011 03:19 GMT3 часа #1490819    
Artos
+1
Равняюсь на тебя, - "Каков вопрос - таков ответ"
vdv5549
Struck тебе уже задал ответный вопрос. Если ответ положительный, то поможем. Если нет - то сначала нужно сходить на Wiki.
Готовый вариант тут даст человек либо с обострённым чувством альтруизма, либо тот, кому просто не фиг делать. Своё время на пояснение азов тратить большинство знающих людей не захочет. Поэтому изучи хоть что-нибудь, где ты будешь "ориентироваться в пространстве", чтобы понимал о чём будет идти разговор. (Не в обиду, каждый с чего-то начинал - но это факт)

Сообщение было успешно отредактировано Gun12 (12-06-2011 03:19 GMT3 часа, назад)

Не стань номинантом премии Дарвина.
vdv5549
[3] Новобранец
    
0
Посты: 2466
Откуда: Ленинград
Возраст: 50
12-06-2011 03:30 GMT3 часа #1490825    
Тогда поищу альтристов !!!


Не становись на пути десантника, ты рискуешь стать загадкой для хирурга. В.Ф. Маргелов
Gun12
[7] Выживший
    
0
Посты: 773
Откуда: СССР
Возраст: 51
12-06-2011 03:41 GMT3 часа #1490831    
vdv5549
Удачи!


Не стань номинантом премии Дарвина.


Форумы > Архив > Свалка > Модификации ТЧ, вопросы и ответы (старое, по 14.06.11)

Страница 62 из 63Первая«5960616263 »

Эта тема закрыта, публикация новых сообщений недоступна.

Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»