Дополнительная библиотека функций. - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: KaMiKaZe, 4erveR, agent007


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 212»
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Дополнительная библиотека функций.
Дополнительная библиотека функций.
firsacho
Дата: СБ, 29.01.2011, 12:10:39 | Сообщение # 1
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Я понимаю конечно, что у нас на сайте очень мало народу более менее прилично разбирается в скриптах, но тем не менее народ начинает проявлять интерес и хочу дать на мой взгляд неплохую идею.

Собрать дополнительную библиотеку функций - отдельный луа-скрипт подключаемый к карте, в котором хранятся дополнительные скрипты-функции, которых нет в червях, но которые часто требуются.

Это очень удобно, потому что не нужно лишний раз писать какие-то стандартные скрипты, а просто вызвать функцию, передав ей при необходимости нужные параметры и получив результат. Так например, скрипт проверки использования оружия, написанный Krash'ем для Innovation. В стандартных функциях к червях такого почему то нет, но очень часто требуется запустить выполнение скрипта именно при использовании конкретного оружия.

Также функции расстановки червей и ограничение команды 1м червем в Inno давно выведены в библиотеку. Достаточно вначале скрипта к карте прописать ActRast = 1 и черви автоматом расставляются на эммиторы. Очень удобно.

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





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Rorschach
Дата: СБ, 29.01.2011, 12:35:52 | Сообщение # 2
Легендарный червь
Группа: Проверенные
Сообщений: 2848
Репутация: 60
Статус: Offline
Крутая идея. Ты предлагаешь дописать их в lib_help.lua, верно? В любом случае, стоит составить список самых нужных функций.



-------------------------------------------------------------
And when the sun is shining, there is justice for all...
And all the people will remember that funny "war".
War, which was so dark in the beginning and so shiny in the end.
But now it's over. Over for all.
-------------------------------------------------------------
Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
 
Герыч
Дата: СБ, 29.01.2011, 12:47:01 | Сообщение # 3
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Отличная идея! Я приму участие!
Теперь тут я не отвяжусь от идеи использования svn smile

мои идеи:
1) все новые функции поместить в модуль w4:

Code
--файл w4.lua
local echo(text)
   SetData("Text.TestComment", text)  
   SetData("CommentaryPanel.Comment", "Text.TestComment")
   SendMessage("CommentaryPanel.ScriptText")
end

w4={}
w4.echo=echo;

--файл stdvs.lua
require"w4"

function Worm_Died()
   deadworm = GetData("DeadWorm.Id")
   w4.echo(deadworm)
end

2) обернуть объекты игры в луа-объекты типа

Code
--какой-то пользовательский код:

local deadworm = w4.worm(GetData("DeadWorm.Id"))
deadworm:setHealth(100)
w4.echo(deadworm.health)

3) перехватывать все стандартные события w4 в скрипте, а в stdvs вызывать уже "высокоуровневые" варианты функций:

Code
--файл w4.lua

local oldWorm_Died = Worm_Died
function Worm_Died()
   if w4.onWormDied then
     local deadworm = w4.worm(GetData("DeadWorm.Id"))
     w4.onWormDied(deadworm)
   else
     oldWorm_Died()
   end
end

--файл stdvs.lua
require"w4"

function w4.onWormDied(worm)
   worm:setHealth(100)
   w4.echo(worm.health)
end


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Дата: СБ, 29.01.2011, 14:02:28 | Сообщение # 4
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Quote (rocketvadim)
Ты предлагаешь дописать их в lib_help.lua, верно

мне кажется удобнее создать отдельный подключаемый скрипт где только дополнительные функции

Quote (Герыч)
все новые функции поместить в модуль w4:

только название пооргинальнее) чтоб можно было сказать название модуля и уже было понятно о чем идет речь. Например какой-нибудь DeveLib назвать... вобщем, чтоб звучало

Quote (Герыч)
--файл w4.lua
local echo(text)
SetData("Text.TestComment", text)
SetData("CommentaryPanel.Comment", "Text.TestComment")
SendMessage("CommentaryPanel.ScriptText")
end

w4={}
w4.echo=echo;

--файл stdvs.lua
require"w4"

function Worm_Died()
deadworm = GetData("DeadWorm.Id")
w4.echo(deadworm)
end


ОМГ.. теперь герыч будет писать кучу неизвестных мне (и большинству) функций... допиши комменарии.. require"w4" например, че такое?)

Quote (Герыч)
перехватывать все стандартные события w4 в скрипте, а в stdvs вызывать уже "высокоуровневые" варианты функций:

ну собственно это я и имел ввиду.

И отдельную тему-справочник создать к библиотеке нужно. Где описаны все функции и как их вызывать, какие параметры можно присвоить, какие получить.





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Rorschach
Дата: СБ, 29.01.2011, 14:10:30 | Сообщение # 5
Легендарный червь
Группа: Проверенные
Сообщений: 2848
Репутация: 60
Статус: Offline
Quote (firsacho)
Например какой-нибудь DeveLib назвать... вобщем, чтоб звучало

Тогда уж лучше AdLib от added - добавленный (гы-гы, получилось похоже на ad libitum)




-------------------------------------------------------------
And when the sun is shining, there is justice for all...
And all the people will remember that funny "war".
War, which was so dark in the beginning and so shiny in the end.
But now it's over. Over for all.
-------------------------------------------------------------
Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
 
firsacho
Дата: СБ, 29.01.2011, 14:18:17 | Сообщение # 6
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Quote (rocketvadim)
Тогда уж лучше AdLib от added - добавленный (гы-гы, получилось похоже на ad libitum)

вариантов много можно придумать. Это еще надо будет повыбирать.
Еще мысль такая что все функции вызываемые из этой библиотеки и переменные используемые ей, должны иметь некий префикс в названии, чтоб сразу при чтении было понятно, что они ссылаются на нее и это нестандартные функции.





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Lex-Serest
Дата: СБ, 29.01.2011, 14:52:20 | Сообщение # 7
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
Quote (firsacho)
require"w4"

это значит включить файл w4.lua в другой файл (х3 как по другому выразить)
вообще ты это должен знать, эта функция есть в пхп

мне страшно за себя - мне тут все понятно, это что то типо упрошенного си или упрошенного джаваскрипта, а вообще все языки чем то друг на друга похожи)


:3
 
firsacho
Дата: СБ, 29.01.2011, 15:26:46 | Сообщение # 8
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
не знал что в луа можно включать файлы друг в друга. Ну подключать можно и через xml.




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
SW_Krash
Дата: СБ, 29.01.2011, 20:15:34 | Сообщение # 9
SW_Krash
BugagaXD
Группа: Проверенные
Сообщений: 818
Репутация: 28
Статус: Offline
ээээ.... а я ничего не понял =)))) в посте Герыча много всего сложного и непонятного... тут просто так не разобраться =)))

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
Герыч
Дата: СБ, 29.01.2011, 22:18:50 | Сообщение # 10
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
пусть библиотека будет зваться очень просто - tweak

Code
--файл tweak.lua  

local echo(text)  
SetData("Text.TestComment", text)  
SetData("CommentaryPanel.Comment", "Text.TestComment")  
SendMessage("CommentaryPanel.ScriptText")  
end

tweak={}  
tweak.echo=echo;

--файл stdvs.lua  
require"tweak"

function Worm_Died()  
      tweak.echo("Hello world!")
end

Кто за такое название?
Название вообще должно быть простое, ибо это в коде придётся много писать, по идее w4 больше подходит =)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Дата: СБ, 29.01.2011, 22:51:55 | Сообщение # 11
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
tweak еще хуже) твик это твики) у тебя нет фантазий на названия) то что простое это понятно. Но оно должно быть красивым и уникальным, иначе путаница получится) как скажешь подключи к скрипту библиотеку твик... туфталогия какая то)




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Герыч
Дата: СБ, 29.01.2011, 23:10:17 | Сообщение # 12
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
думай быстрее тогда)
Я хочу svn хранилище уже создать и рассказать, как пользоваться.
Да, скачайте пока и установите себе вот эти проги:
TortoiseSVN (или 64-битную версию),
русификация (64 бита)

Было бы здорово ещё, если бы почитали бы главу 2 в этой книжке-документации


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Дата: ВС, 30.01.2011, 23:08:51 | Сообщение # 13
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Во-первых, название библиотеки придумали?
Во-вторых, вот как лучше библиотеку оформить

w4.lua:

Code
module(..., package.seeall)

local a = 10  --локальная переменная, снаружи не будет видна
version = 1  --глобальная переменная, снаружи будет видна как w4.version

local function about() --локальная функция, снаружи не будет видна
   echo("w4 module")
end

function echo(text) --глобальная функция, снаружи будет видна как w4.echo(text)
   SetData("Text.TestComment", text)   
   SetData("CommentaryPanel.Comment", "Text.TestComment")   
   SendMessage("CommentaryPanel.ScriptText")   
end

stdvs.lua:

Code
require"w4"
w4.echo(w4.version)

А вот один из вариантов, как сделать класс:
w4.lua:

Code
module(..., package.seeall)

worm = {}

function worm.new(...)
   local self = {}

   --закрытые переменные
   local id

   --инициализация объекта
   if arg.n == 1 then
     id = arg[1]
   else
     id = GetData("ActiveWormIndex")
   end

   --Закрытые функции
   local function containerName()
     local DataId = { "Worm.Data00", "Worm.Data01", "Worm.Data02", "Worm.Data03",
                      "Worm.Data04", "Worm.Data05", "Worm.Data06", "Worm.Data07",
                      "Worm.Data08", "Worm.Data09", "Worm.Data10", "Worm.Data11",
                      "Worm.Data12", "Worm.Data13", "Worm.Data14", "Worm.Data15",
                      "Worm.Data16", "Worm.Data17", ""}
     return DataId[id + 1]
   end
    
   local function container()
     return QueryContainer(containerName())
   end

   --Публичные функции
   function self.id()
     return id
   end
    
   function self.name()
     local worm = container()
     return worm.Name
   end
    
   function self.teamIndex()
     local worm = container()
     return worm.TeamIndex
   end

   return self
end

stdvs.lua:

Code
require"w4"
worm = w4.worm.new(10)
w4.echo(worm.name())


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Дата: ВС, 30.01.2011, 23:36:48 | Сообщение # 14
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Quote (Герыч)
module(..., package.seeall)

local a = 10 --локальная переменная, снаружи не будет видна
version = 1 --глобальная переменная, снаружи будет видна как w4.version

local function about() --локальная функция, снаружи не будет видна
echo("w4 module")
end

function echo(text) --глобальная функция, снаружи будет видна как w4.echo(text)
SetData("Text.TestComment", text)
SetData("CommentaryPanel.Comment", "Text.TestComment")
SendMessage("CommentaryPanel.ScriptText")
end


локальная переменная = 10 - зачем она нужна?

Что делает module(..., package.seeall) ?

Функция для вывода текста понравилась)

Quote (Герыч)
А вот один из вариантов, как сделать класс:

Для начала объясни научнопопулярным языком, понятным языком не для программистов что за класс и зачем он нужен?





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Герыч
Дата: ПН, 31.01.2011, 00:31:19 | Сообщение # 15
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
module(..., package.seeall) - не помню. Главное, что после этого все функции и переменные будут помещаться в таблицу, указанную в require"w4", то есть в w4, соответственно ты сможешь вызывать их снаружи. package.seeall вроде чтобы ты мог внутри модуля использовать то, что объявлено снаружи.

Класс - это описание чего-либо, что можно потрогать руками) Легче на примере:
Класс машина. Машина имеет свойства - цвет, вес, модель, хз ещё что. Машину можно завести, можно заправить, открыть и т.п - это методы, которые можно над ней проводить.

В ООП(объектно ориентированном программировании) обычно сначала описывают все классы, действия над ними(методы) и их свойства. К примеру у нас это так: класс - червь, методы - убить червя DieQuietly, спаунить Respawn, убрать червя UnspawnWorm, прибавить здоровья. Свойства - имя, индекс, здоровье.

Класс - это просто описание любого червя. Для работы с одним создают объект этого класса, его конкретный экземпляр (с помощью w4.worm.new()).


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Дополнительная библиотека функций.
Страница 1 из 212»
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz