Пользователей: 2
Гостей: 709
Всего: 711

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

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









Автор Сообщение
Silver Raven
    
Посты: 415
Откуда:
Возраст:
10-06-2011 18:22 GMT3 час. #1490172   
Dark Scripter
Извиняйте, но не все тут с СДК на ты, хотя пару лет назад я пробовал там чего-то сваять... Да и потом ради всего этого декомпилировать уровень, а затем обратно, ну его.

Artos
В общем и целом, все эти варианты (на данный момент) для меня малопонятны...


Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 18:28 GMT3 час. #1490174   
Stalker_Alex333
Ты вроде как не новичок ...
Не умеешь пользоваться нет-пакетами? Возьми готовую библиотеку (в том же Симбионе) и используй как обычные функции (считать таблицу -> поменять элемент -> вернуть измененную таблицу).
Не умеешь отловить момент записи актрских параметров (actor_binder:save) или спавн актора в игру (actor_binder:net_spawn)? Хм, ... тогда прежде чем воплощать свои задумки стОит поизычать то, от чего они заисят. Без этого только один вариант: 'сделайте мне то-то' ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 18:39 GMT3 час. #1490180   
Artos, singapur22, Gun12, буду обращаться к вам

вот сейчас пот


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

l
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
10-06-2011 18:46 GMT3 час. #1490189   
Stalker_Alex333

З.Ы. Все координаты (и позицию и поворот головы) снимал с помощью проги Position Informer, разве он может ошибаться? Или такие вещи лучше смотреть через rs_stats? Показать один из своих lc?

Во первых, поворот актора, и поворот головы(камеры), это разные вещи, и определяются разными методами. Position Informer, на сколько я знаю снимает дирекцию актора, rs_stats и метод device().cam_dir снимают дирекцию камеры. Сначала уточни для себя, какие координаты тебе требуются.
Во вторых, если дирекцию устанавливаешь там, где и положено (в dest_direction), то актор обязан поворачиваться по указанным координатам.
Вывод. Или не верно указываешь дирекцию, или указываешь её не там, не следует.

отредактировал(а) singapur22: 10-06-2011 18:48 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 18:51 GMT3 час. #1490191   
Dark Scripter
А можешь привести линки на 'acdc_un-23may2011 и ACDC_with_split_2011_03_13' (где скачать), а то как то пропустил сей факт, а любопытно (может что новенького?). :-)
(поиск по нету молчит ...)

P.S. Спасибо! Скачал, посмотрим ...

отредактировал(а) Artos: 10-06-2011 19:06 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 18:54 GMT3 час. #1490193   
>>>пост<<<

и покажите на примере как унаследовать свойства одного класса от другого


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

l
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 18:58 GMT3 час. #1490198   
Struck
Когда-то давно тут уже разбирались с 'this' и 'self' ...

Кратко: 'self' при использовании сей переменной в классе имеет значение юзердаты самомно класса, в котором используется. Точнее при создании (инициализации) самого класса эта переменная 'self' создается и ей присваивается то, что собственно и является классом (юзердатой класса).
Т.о. обрахаясь к ней из методов самого класса - ты обращаешься к классу (самому себе).
Область видимости ограничена самим классом, т.е. эта переменная недоступна 'из вне.

P.S. Наследование свойств класса само собою подразумевается, если новый класс создается на базе имеющегося.
Не путай(!) добавление 'своих'/новых методов в имеющийся класс с созжанием нового.

отредактировал(а) Artos: 10-06-2011 19:24 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 19:01 GMT3 час. #1490201   
Artos то есть я понял правильно? это и есть "наследствие" с последующим прикреплением(добавлением) к нему тех или иных методов присущих этому классу?


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

l
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
10-06-2011 19:02 GMT3 час. #1490202   
Struck
>>>пост<<<
там есть про self


Не стань номинантом премии Дарвина.
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 19:07 GMT3 час. #1490207   
Gun12 т.е. каждый раз вызывая self мы создаем новую **5015618d69873ce82a42**]class "ui_dd" (CUIScriptWnd)[/code]

значит что мы создаем свой класс(в данном случае ui_dd) на базе уже существующего CUIScriptWnd?

отредактировал(а) Struck: 10-06-2011 19:09 GMT3 час.

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

l
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 19:19 GMT3 час. #1490217   
ox и тяжко тащить бегемота из болота ...

Struck Да, 'CUIScriptWnd' - это уже существующий (после запуска игры) класс, по которому (на базе которого) ты можешь создать свои классы, обзывая их как тебе удобно и добавлять свои методы (если потребно). Естественно 'твой' созданый класс наследует свойства его породившего.

Вызывая 'self' - ты НЕ создаешь ничего (о создании при инициализации класса уже написал выше!), а обращаешься каждый раз к одной и той же таблице, т.е. к таблице класса, которая едина для всего класса (это же собственно и есть класс!).

Иными словами: 'self' - это единый псевдоним для названий классов и обращаясь к нему, ты по сути обращаешься к классу по этому псевдониму. Само собою этот псевдоним доступен только изнутри класса. Извне - это уже обычная переменная.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 19:25 GMT3 час. #1490226   
Artos
[left]все же лучше пытаться понять, чем продолжать исп. метод "тыка" на авось[/left**5031618d69873ce82a42**yellow]?


Т.е.
[code]name:__init() super()
[/code]
это и есть основа всего, далее идет лишь вызов методов и функций(последние я так понял для удобства, типа InitContols и InitCallbacks)


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

l
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 19:31 GMT3 час. #1490230   
Struck
Сорри. но пока ты не поймешь разницы между классом и функцией - разговор будет китайца с чукчей ... :-(
Конечно лучше познавать, чем быть неучем, но место для подобного обучения явно неудачное. Для многих читающих подобные размусоливания являются мусором, а это означает - мешаем нормальномуу общению.
Постарайся прежде чем задавать вопрос(ы) - пару часиков поискать ответ(ы) самостоятельно!


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 19:37 GMT3 час. #1490233   
Artos ну функция же сама по себе, от класса она не зависит

Мусором я думаю данный диалог-разжевывание не будет, ибо детальное устройство этих классов не знает тут никто кроме вас троих

почитал...вот что понял:

"Функции не могут создавать объекты. Классы могут создавать объекты, у каждого из которых есть свое состояние. Функции могут быть включены в классы, а классы нельзя никуда подключить. Класс может наследоваться от другого класса, а функция не может наследоваться ни от чего."

Верно ли моё суждение?

отредактировал(а) Struck: 10-06-2011 19:45 GMT3 час.

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

l
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
10-06-2011 20:09 GMT3 час. #1490262   
Struck
Давай ещё раз попробу**5001618d69873ce82a42** = t})

a:f() --> 2
b:f() --> 5
c:f() --> 8
[/code]
На таблицу t и строки с setmetatable пока не обращай внимания.
Как видишь в конце кода идёт три вызова.
[code]
a:f()
b:f()
c:f()
[/code]
Все три раза вызывается одна и та же фунция
[code]
function t:f()
print(self.w)
end
[/code]
Но каждый раз вместо t в этой функции как бы "подставляются" вызывающие объекты. Сначала a, потом b и в конце c

И соответственно вместо self каждый раз будет "подставляется" этот же вызывающий объект.

Первый раз вызывали a:f(), значит вместо self "подставляется" вызывающий объект(таблица) a.
И напечатает (print(a.w)) - 2

Во второй раз вызывали b:f(), значит вместо self "подставляется" вызывающий объект(таблица) b.
И напечатает (print(b.w)) - 5

И наконец вызывали c:f(), значит вместо self "подставляется" вызывающий объект(таблица) c.
И напечатает (print(c.w)) - 8

Т.е. что получается?
Если в записи function t:f() мы можем вместо t каждый раз "подставлять" новый объект (вызывая a:f(), b:f() и c:f() "подставляется" соответственно a, b и c ),
то в строке print возникает вопрос - "Значение w какой из трёх таблиц нам нужно напечатать?"
Для этого и задаётся системная локальная (для этой функции) переменная self. Она то и принимает значение того объекта, который вызвал данную функцию.

отредактировал(а) Gun12: 10-06-2011 21:19 GMT3 час.

Не стань номинантом премии Дарвина.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 20:10 GMT3 час. #1490263   
Struck
Вновь вспоминается басня дедушки Крылова о слепцах изучающих слона ...
На уровне слепого, ощупывающего хвост слона и делающего вывод о 'слон - длинный тонкий как змея' - твои рассуждения можно считать почти верными. :-)
Просто кто-то возразит, типа "Как же так, а как же я спавню объект в игру функцией спавна?", не подозревая, что этой функцией он просто вызывает соответствующие методы соотвествующего класса ...
Т.о. многое упирается и в понимание смысла краткой фразы, допускающей различные толкования. :-)


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
10-06-2011 20:23 GMT3 час. #1490282   
Struck Функция может быть двух типов. Обычная функция (в Lua, функция является типом значения), и функция класса (так называемый "метод"). Функция класса (метод) может быть вызван только внутри класса, или от объекта класса. В отличии от обычной функции, метод не может быть вызван отдельно от класса (непосредственно), так как производит те, или иные действия над самим объектом класса, или по крайней мере тесно на него завязан. Но в то же время могжет производить и независимые от класса действия. Всё зависит от его назначения.

отредактировал(а) singapur22: 10-06-2011 20:31 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 20:50 GMT3 час. #1490300   
singapur22 это-то я понимаю
Artos это понятно, к примеру db.actor:character_community() вызывает метод character_community() из класса game_object

Gun12 ясно, а в обычном видении это как будет?(через class:__init() super())


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

l
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
10-06-2011 20:58 GMT3 час. #1490308   
Struck
Я тебе рассказал о самом значении self.
О том как это работает в принципе.
Ищи функции с self, там она работает точно так же.


Не стань номинантом премии Дарвина.
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
10-06-2011 21:01 GMT3 час. #1490310   
Прошу помочь мне:
Сначала вывожу на худ вывожу свой скриптовый ПДА на экран. Потом отдельным классом вывожу поверх пда еще одно окно "maker".**5001618d69873ce82a42**n
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")[/code]
Если делать так, то приходят смски содержанием userdata,userdata и даже функция GetText возвращает Custom logic, но однако реально в эдит боксе ничеко не меняется


Знание assembler, C/C++, Pascal, Lua.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 21:57 GMT3 час. #1490343   
Ma$ter
Вспомни: "Каков вопрос - таков ответ".
Неужели непонятно, что кинув в топик огрызок некоего кода с вызовами сторонних скриптов и без какого-либо смысла в самом коде - ждать ответа стОит только от кашпировского ... или любителей погадать на кофейной гуще.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
10-06-2011 22:07 GMT3 час. #1490346   
Если Вам чего то не хватает, то вы скажите что мне необходимо выложить, а то я могу долго гадать на кофейной чайной (я не люблю кофе) гуще что вам нужно.
Вспомни:"Каков ответ - таков и повторный вопрос"


Знание assembler, C/C++, Pascal, Lua.
Struck
    
Посты: 1946
Откуда:
Возраст:
10-06-2011 22:23 GMT3 час. #1490352   
Ma$ter чайная гуща?...оригинально:sarcastic:

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


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

l
Artos
    
Посты: 4176
Откуда:
Возраст: 65
10-06-2011 22:34 GMT3 час. #1490358   
Ma$ter
Видно у кого то из нас мозги набекрень ...
Мне то ничего НЕ нужно от твоих вопросов/ответов и НЕ давал я 'ответ', а дал комментарий к вопрошалке ... ;-)
Это вроде как тебе нужна помощь - так потрудись задать вопрос так, чтобы поняв его можно было бы ответ дать, а не заниматься вытягиванием из тебя того, что непонятно иль погадалками.
пока только можно сказать, что иль кодер написавший сей "код" не в себе иль спрашивает о чем-то ином, чем о коде ...

local t1=positioninformer.log_checker_full(get_hud()) --/ вероятно получается класс некоего худа
if t1 then
  amk.send_tip(type(t1)) --/ вывод сообщения о том, что класс худа - это юзердата
else
  log1("1") --/ ... иль не получен класс худа
end
local t2=t1.stalker_ed_logic --/ вероятно присваиваем t2 некий объект/метод/функцию из класса худа (иль из пустоты)
if t2 then
  amk.send_tip(type(t2)) --/ вывод сообщения о типе: вероятно функция (или объект класса худа)
else
  log1("2") --/ ... иль ничего не присвоили
end
t2:SetText("Custom logic") --/ глупая попытка применить метод класса к объекту или 'пустоте'

Далее погадалками заниматься желания не имею ... :-G Даже отформатировать текст кода не утруждаешь себя.



"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
10-06-2011 23:20 GMT3 час. #1490391   
singapur22
Помнишь свой вопрос по __index, __newindex и т.д? (Если конечно ещё н


Не стань номинантом премии Дарвина.
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
10-06-2011 23:57 GMT3 час. #1490413   
Gun12 Я пытался переопределить метатаблицу. Но у меня ничего не получилось. Может не так пытался, а может здесь это не возможно. Знать бы, на каком основании здесь вообще производится создание классов.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
11-06-2011 00:22 GMT3 час. #1490418   
А всё-таки, чем является переменная mt?


Наверное завтра(сегодня) попробую доделать. Уже плохо соображаю.

отредактировал(а) Gun12: 11-06-2011 01:48 GMT3 час.

Не стань номинантом премии Дарвина.
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
11-06-2011 00:54 GMT3 час. #1490422   
Gun12 Таблицей метаметодов. Хотя... Ты же пытаешся определить метатаблицу из самого класса, а не с его объект**5003618d69873ce82a42**tatable(gaga)

function gaga:__init()
end

for k in pairs(mg) do
get_console():execute(tostring(k))
end[/code]

Реультат:
[code]__index
__newindex
__luabind_classrep
__gc
__call[/code]


--//----------------------------------------
Попытался её переопределить, в режиме теста. Но получил такой глюк:
[code]class "gaga"

local mg = getmetatable(gaga)

function mg:__index(key)
get_console():execute(tostring("__index"))
return 0
end

function mg:__newindex(key, value)
get_console():execute(tostring("__newindex"))
end

function gaga:__init()
end

local obj = gaga()
obj[1] = 0
local f = obj[1][/code]

Результат:
[code]__newindex
atempt_to_call_a_nil_value
__index
__index
__index
...[/code]

Выводов __index было очень много. Еле дождался, когда консоль поднялась на верх своёй страницы.

отредактировал(а) singapur22: 11-06-2011 09:29 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Struck
    
Посты: 1946
Откуда:
Возраст:
11-06-2011 09:44 GMT3 час. #1490494   
а как узнать из какого оружия был убит сталкер?...вроде killer с клсидом пушки же не сравнишь


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

l
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
11-06-2011 10:19 GMT3 час. #1490499   
Struck По сути, киллером определяется объект (сталкер, мутант, аномалия). А определить, чем он его убил, автоматом, ножом, или с пинка, дело техники.

Я в данном направлении тесно ещё не работал, но полагаю, что сначала происходит событие хита. И если хит был критическим, вызывается событие смерти. Если это действительно так, то определение оружия лучше вешать именно на хит, с запоминанием во внешней переменной (или ячейке определённой таблицы), как типа оружия, так и сталкера(его id). И если после хита было вызвано событие смерти, и смерть поступила от того же объёкта (сталкера), выдавать сохранёный тип оружия туда, куда требуется.

отредактировал(а) singapur22: 11-06-2011 10:31 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.


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


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

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