LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

Я делаю пользовательский мод из двух частей:

  1. Клиентская часть у пользователей на компе. В ней как раз тысяч 30 строк без единого комметария. Ее приходится запутывать и обфусцировать, чтобы не читерили.

  2. Серверная часть у меня на компе, принимает команды от клиентской и отправляет сигналы обратно.

https://youtu.be/1qlzmW54woU

Это десяток эвентов различных, квесты со своей механикой - как на видео, например изучение испанского. Реализации валют для рейдов, системы репутаций, работа с фреймами игры, внутреигровая википедия.. И все, что вообще приходит в голову. Самое тяжкое было - как раз отрисовка интерфейса - приходилось все вот эти кнопки отдельным кодом оформлять. А вчера мне как бумкнуло что то в голове - я уже где то месяц пытался понять что такое ООП и нахрена его вообще кто то использует и тут до меня дошло.

Я до этого уже изобрел почти свою реализацию ООП для удобства, но чего то все время не хватало: я делал функцию, которая принимала в себя параметры и имя таблицы. В функции были шаблоны для работы:

function cepochkiQuestov(tabella,shablon,kont,lok,x,y,myNome)
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "поди туда" then
        --тут отработка шаблона "поди туда"
    end
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "добыча предметов" then
        --код проверки на добычу предметов
    end
end

В итоге формируем таблицу с квестами, а если нам нужно добавить новый квест - просто пишем новый модуль в функцию и все.

И вдрух как все фрагменты пазла сложились в голове и я внезапно понял как надо работать с ООП. Можно же сформировать объекты, определить им поведение, потом переназначать им наследование, менять некоторые функции без дублирования кода, без всего вот этого вот.

Это же какие возможности, работа с данными без постоянных проверок на существания таблиц - заворачиваем все проверки и обработки внутрь объекта и забываем об этом. Я тут себе еще и СУБД слегка пилить начал, хорошо хоть не далеко зашел, надо с ООП переписать.

function addDb(db,key,msg)
	if nsDb == nil then
		nsDb = {}
	end
	if nsDb[db] == nil then
		nsDb[db] = {}
	end	
	if nsDb[db][key] == nil then
		nsDb[db][key] = {}
	end
  	local test
  	local razmerDb = tablelength(nsDb[db][key])
  	if razmerDb > 0 then
	  	for k,v in pairs(nsDb[db][key]) do
	  		if v == msg then
	  			test = 1
	  		end
	  	end
	end
  	if test == nil then
  		local num = tostring(razmerDb+1)
  		nsDb[db][key][num] = msg
  	end
end

Вот, например, сделал я добавление данных в таблицу с проверками автоматическим созданием всего что нужно, но у меня была проблема с динамическими путями до данных. А ведь это решается наследованием и переназначением обработки в объекте! Да почему ж я раньше этого не знал то.

Исправление LightDiver, :

Я делаю пользовательский мод из двух частей:

  1. Клиентская часть у пользователей на компе. В ней как раз тысяч 30 строк без единого комметария. Ее приходится запутывать и обфусцировать, чтобы не читерили.

  2. Серверная часть у меня на компе, принимает команды от клиентской и отправляет сигналы обратно.

https://youtu.be/1qlzmW54woU

Это десяток эвентов различных, квесты со своей механикой - как на видео, например изучение испанского. Реализации валют для рейдов, системы репутаций, работа с фреймами игры.. И все, что вообще приходит в голову. Самое тяжкое было - как раз отрисовка интерфейса - приходилось все вот эти кнопки отдельным кодом оформлять. А вчера мне как бумкнуло что то в голове - я уже где то месяц пытался понять что такое ООП и нахрена его вообще кто то использует и тут до меня дошло.

Я до этого уже изобрел почти свою реализацию ООП для удобства, но чего то все время не хватало: я делал функцию, которая принимала в себя параметры и имя таблицы. В функции были шаблоны для работы:

function cepochkiQuestov(tabella,shablon,kont,lok,x,y,myNome)
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "поди туда" then
        --тут отработка шаблона "поди туда"
    end
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "добыча предметов" then
        --код проверки на добычу предметов
    end
end

В итоге формируем таблицу с квестами, а если нам нужно добавить новый квест - просто пишем новый модуль в функцию и все.

И вдрух как все фрагменты пазла сложились в голове и я внезапно понял как надо работать с ООП. Можно же сформировать объекты, определить им поведение, потом переназначать им наследование, менять некоторые функции без дублирования кода, без всего вот этого вот.

Это же какие возможности, работа с данными без постоянных проверок на существания таблиц - заворачиваем все проверки и обработки внутрь объекта и забываем об этом. Я тут себе еще и СУБД слегка пилить начал, хорошо хоть не далеко зашел, надо с ООП переписать.

function addDb(db,key,msg)
	if nsDb == nil then
		nsDb = {}
	end
	if nsDb[db] == nil then
		nsDb[db] = {}
	end	
	if nsDb[db][key] == nil then
		nsDb[db][key] = {}
	end
  	local test
  	local razmerDb = tablelength(nsDb[db][key])
  	if razmerDb > 0 then
	  	for k,v in pairs(nsDb[db][key]) do
	  		if v == msg then
	  			test = 1
	  		end
	  	end
	end
  	if test == nil then
  		local num = tostring(razmerDb+1)
  		nsDb[db][key][num] = msg
  	end
end

Вот, например, сделал я добавление данных в таблицу с проверками автоматическим созданием всего что нужно, но у меня была проблема с динамическими путями до данных. А ведь это решается наследованием и переназначением обработки в объекте! Да почему ж я раньше этого не знал то.

Исправление LightDiver, :

Я делаю пользовательский мод из двух частей:

  1. Клиентская часть у пользователей на компе. В ней как раз тысяч 30 строк без единого комметария. Ее приходится запутывать и обфусцировать, чтобы не читерили.

  2. Серверная часть у меня на компе, принимает команды от клиентской и отправляет сигналы обратно.

https://youtu.be/1qlzmW54woU

Это десяток эвентов различных, квесты со своей механикой - как на видео, например изучение испанского. Реализации валют для рейдов, системы репутаций, работа с фреймами игры.. И все, что вообще приходит в голову. Самое тяжкое было - как раз отрисовка интерфейса - приходилось все вот эти кнопки отдельным кодом оформлять. А вчера мне как бумкнуло что то в голове - я уже где то месяц пытался понять что такое ООП и нахрена его вообще кто то использует и тут до меня дошло.

Я до этого уже изобрел почти свою реализацию ООП для удобства, но чего то все время не хватало: я делал функцию, которая принимала в себя параметры и имя таблицы. В функции были шаблоны для работы:

function cepochkiQuestov(tabella,shablon,kont,lok,x,y,myNome)
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "поди туда" then
        --тут отработка шаблона "поди туда"
    end
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "добыча предметов" then
        --код проверки на добычу предметов
    end
end

В итоге формируем таблицу с квестами, а если нам нужно добавить новый квест - просто пишем новый модуль в функцию и все.

И вдрух как все фрагменты пазла сложились в голове и я внезапно понял как надо работать с ООП. Можно же сформировать объекты, определить им поведение, потом переназначать им наследование, менять некоторые функции без дублирования кода, без всего вот этого вот.

Это же какие возможности, работа с данными без постоянных проверок на существания таблиц - заворачиваем все проверки и обработки внутрь объекта и забываем об этом. Я тут себе еще и СУБД слегка пилить начал, хорошо хоть не далеко зашел, надо с ООП переписать.

Исходная версия LightDiver, :

Я делаю пользовательский мод из двух частей:

  1. Клиентская часть у пользователей на компе. В ней как раз тысяч 30 строк без единого комметария. Ее приходится запутывать и обфусцировать, чтобы не читерили.

  2. Серверная часть у меня на компе, принимает команды от клиентской и отправляет сигналы обратно.

https://youtu.be/1qlzmW54woU

Это десяток эвентов различных, квесты со своей механикой - как на видео, например изучение испанского. Реализации валют для рейдов, системы репутаций работа с фреймами игры.. И все, что вообще приходит в голову. Самое тяжкое было - как раз отрисовка интерфейса - приходилось все вот эти кнопки отдельным кодом оформлять. А вчера мне как бумкнуло что то в голове - я уже где то месяц пытался понять что такое ООП и нахрена его вообще кто то использует и тут до меня дошло.

Я до этого уже изобрел почти свою реализацию ООП для удобства, но чего то все время не хватало: я делал функцию, которая принимала в себя параметры и имя таблицы. В функции были шаблоны для работы:

function cepochkiQuestov(tabella,shablon,kont,lok,x,y,myNome)
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "поди туда" then
        --тут отработка шаблона "поди туда"
    end
    if t_cQ[tabella][testQ[myNome]['puteshestvie']]['sh'] == "добыча предметов" then
        --код проверки на добычу предметов
    end
end

В итоге формируем таблицу с квестами, а если нам нужно добавить новый квест - просто пишем новый модуль в функцию и все.

И вдрух как все фрагменты пазла сложились в голове и я внезапно понял как надо работать с ООП. Можно же сформировать объекты, определить им поведение, потом переназначать им наследование, менять некоторые функции без дублирования кода, без всего вот этого вот.

Это же какие возможности, работа с данными без постоянных проверок на существания таблиц - заворачиваем все проверки и обработки внутрь объекта и забываем об этом. Я тут себе еще и СУБД слегка пилить начал, хорошо хоть не далеко зашел, надо с ООП переписать.