Скрипты в ПЗ.
#1
Люди, помогите кто-нибуть со скриптами плиз.
Как в них можно делать циклы, условия и прочую нелинейность?
И как работает команда @addunittoserver?:work:
#2
Достаточно емкий у тебя вопрос. Я не могу на рассказ тратить много времени, тем более что ты бродяга. Smile
Кратко будет так…

AddUnitToServer( NameUnitMap : string , NameUnitRes : string , NameUnitControl : string , x : float , y : float , z : float )

Устанавливает юнит-объект: NameUnitRes на текущую карту в точку (x,y,z) из базы данных ресурсов игры. Объект будет иметь внутреннее имя: NameUnitMap и имя, отображаемое в инфоокнах: NameUnitControl. Большие и маленькие буквы внутреннего имени: NameUnitMap не различаются. Системная функция преобразования имени: (NameUnitMap : string) в код (idUnit : float) представляет все строчные символы имени как прописные - к верхнему регистру. Не рекомендуется возвращать код: idUnit от объекта добавленного на карту командой: AddUnitToServer с помощью функции: GetObjectId. Полученный на карте объект командой: AddUnitToServer будет иметь код - 10 символов, а команда: GetObjectId работает с ошибкой с десятизначными силами. Команда правильно работает только с объектами прописанными в таблице NPCs, так как добавленный объект будет иметь контейнер с переменными переменными совойств персонажа игрока, со всеми дополнительными параметрами, навыками и умениями. При этом, если имя: NameUnitMap совпадает с именем файла в таблице ресурсов: texts.res (textslmp.res) с предиктором: "pers", например, "Nalo", и оствлен параметр: NameUnitControl пустым, то из базы данных локализации: texts.res (textslmp.res) будет взято имя имя этого объекта. Например, Сингл, ввести в консоли команду использование расширенных консольных команд, затем следующую строрку: @AddUnitToServer( "Nalo","Human Hadagan Pretty","",GetX(GetLeader()), GetY(GetLeader()),0)
#3
Во-первых, спасибо. Smile
Во-вторых, я не бродяга, а зарегистрировался.
В-третьх, я бы хотел чем-нибуть вам помочь, хотя думаю, что тут и без меня справятся сами (не очень великий я программер да и VB мало кому нужно, но все же...).
#4
CAHEK7. пожалуйста. Помогай, конечно. Мы сами программисты «не очень» Wink
Вот сейчас нам нужны идеи по менджеру модов. Мы к стартеру делаем программу, которая будет совмещать моды игроков с ПЗ, чтобы эти моды уживались друг с другом и со стандартной игрой. А то ведь после установки мода нужно игру переустанавливать, чтобы снова поиграть в стандартную игру.
Smile
#5
Ну да..., извини, какой же ты бродяга, ты неизвестный. Кстати, а почему неизвестный?, это у нас такие имена к новичкам?
Мдя...
:drug:
#6
Цитата:Ну да..., извини, какой же ты бродяга, ты неизвестный. Кстати, а почему неизвестный?, это у нас такие имена к новичкам?
Мдя...
:drug:
На новом форуме уже придуманы новые ранги. Wink
Это будет сюрпризом. Cool
#7
Можете кинуть MOB Reversing Tools или хотя бы один mob файл расшифрованный?
Очень хочется посмотреть что там внутри...
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
#8
CAHEK7
Что внутри мобов можно будет посмотреть в нашем проекте "Энциклопедия ПЗ". Этот проект тестировался в прошлом году, но пока мы его заморозили, из-за большого количества неточностей и «белых пятен». Сейчас мы знаем о ПЗ гораздо больше, чем на момент "заморозки". Непосредственно над "Энциклопедией ПЗ" мы пока не работаем. Сейчас мы заняты проектом «Паргелий».
#9
Цитата:Можете кинуть MOB Reversing Tools или хотя бы один mob файл расшифрованный?
Очень хочется посмотреть что там внутри...
В ПЗ версии 1.06 есть незашифрованные файлы: zonemainmenunew.mob и zone20.mob
В демо-версии все файлы незашифрованные.
#10
Спасибо Big Grin
пошел я разбираться Smile
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
#11
У меня тоже вопрос Rolleyes
Как мне задать дипломатию созданию на карте не по номеру группы а по личному ИД создания? :upset: Ну чтобы задать ее только для одного а не для целой кучи?
Three Rings for Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness
bind them
In th land of Mordor where the Shadows lie.
#12
Ну что? Никто незнает? :drug:
Three Rings for Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness
bind them
In th land of Mordor where the Shadows lie.
#13
Сначала переопредели дипломатическую группу для юнита. А потом для этой группы уситанови нужную дипломатию. Всего дипгрупп может быть от 32 (0-31).
#14
Пасиба Rolleyes , но есть махонькая проблемка - я понятия не имею как установить дипломатическую группу группу для юнита...
Three Rings for Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness
bind them
In th land of Mordor where the Shadows lie.
#15
можно сделать так:
@setplayer(getobject(id),n)
n-номер игрока к которому будет принадлежать юнит getobject(id).
меняешь дипломатию между разными игроками и все будет работать.
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
#16
Спасибо Smile
Three Rings for Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness
bind them
In th land of Mordor where the Shadows lie.
#17
а еще можно
@setenemy(unit:onject,nplayer:float)
зайди на http://www.gipat.ru/forum/index.php?showto...t=0&#entry19938
я там написал как она работает
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
#18
Гм, оказывается подробных разьяснений комуто мало Smile
По многочисленным прозьбам всех читеров ПЗ выкладываю скрипт по вызову поросенка Пятачка Big Grin

@AddUnitToServer("","LMP Unique Pig Boryka 1","",GetX(GetLeader()),GetY(GetLeader()),0)

Пятачек будет без названия, если хотите с именем то вот так:

@AddUnitToServer("","LMP Unique Pig Boryka 1","Boryka",GetX(GetLeader()),GetY(GetLeader()),0)
Но имя можно писать только английскими буквами Tongue
Three Rings for Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness
bind them
In th land of Mordor where the Shadows lie.
#19
AddUnitToServer( NameUnitMap : STRING , NameUnitRes : STRING , NameUnitControl : STRING , x : FLOAT , y : FLOAT , z : FLOAT )
Устанавливает юнит-объект: NameUnitRes на текущую карту в точку (x,y,z) из базы данных ресурсов игры. Объект будет иметь внутреннее имя: NameUnitMap и имя, отображаемое в инфоокнах: NameUnitControl. Большие и маленькие буквы внутреннего имени: NameUnitMap не различаются. Системная функция преобразования имени: (NameUnitMap : string) в код (idUnit : float) представляет все строчные символы имени как прописные - к верхнему регистру. Не рекомендуется возвращать код: idUnit от объекта добавленного на карту командой: AddUnitToServer с помощью функции: GetObjectId. Полученный на карте объект командой: AddUnitToServer будет иметь код - 10 символов, а команда: GetObjectId работает с ошибкой с десятизначными симвалами. Команда правильно работает только с объектами прописанными в таблице NPCs, так как добавленный объект будет иметь контейнер с переменными совойств персонажа игрока - со всеми дополнительными параметрами, навыками и умениями. При этом, если имя: NameUnitMap совпадает с именем файла в таблице ресурсов: texts.res (textslmp.res) с предиктором: "pers", например, "Nalo", и оствлен параметр: NameUnitControl пустым, то из базы данных локализации: texts.res (textslmp.res) будет взято имя этого объекта. Например, Сингл, ввести в консоли команду использование расширенных консольных команд, затем следующую строрку: @AddUnitToServer( "Nalo","Human Hadagan Pretty","",GetX(GetLeader()), GetY(GetLeader()),0)

Не забывайте, если нужно динамически добавлять персонажей из консоли, то сначала нужно создать файл с локализованным именем персонажа и запаковать файл с соответствующим иенем в базе данных локализаций texts.res. Получаемый персонаж будет иметь расширенную структуру с дополнительными характеристиками персонажа, а не простого юнита. По этому нужно в теаблице NPCs добавить новую строку с именем будущего перса и заполнить его характеристики, иначе у перса будет 0. Можно и консольными командами заполнить некоторые характеристики нового персонажа и затем полечить его…

Пятачок не персонаж, его имени нет в списке персонажей, но есть «Свинья»…
@AddUnitToServer("Pig","LMP Unique Pig Boryka 1","Boryka",GetX(GetLeader()),GetY(GetLeader()),0)

Smile
#20
Jaroslav
Я могу только предполагать…
Так вот, я думаю что: команда «AddUnitToServer», это старая команда и возможно вообще предназначена для конструктора ПЗ, а не для самой игры, или что-то в этом роде.
Команда «AddUnitToServer» работает правильно, но только с объектами-персонажами. Разумеется, можно предварительно прописать кого угодно в таблице NPCs, и добавлять нового «перса» динамически на игровую зону. Но, проблемы вывода полноценного персонажа останутся и будут не только, как говорится, с «простыми юнитами», но и вообще с любыми юнитами которых нет в базе текстур "redress.res" или может быть даже тех, чьи имена текстур не начинаются на «unhu…». То есть, полноценно добавляться будут только человекообразные, к ним относятся только Люди и Орки. Только людей и Орков, в обычной ПЗ можно добавить этой командой на игровую зону, так как графические ресурсы Людей и Орков находятся в отдельном контейнере ресурсов, В общем, разработчики так реализовали эту функцию, и текстуры других юнитов (из других ресурсов) эта команда не загружает. Хотя можно попробовать перенести нужные текстуры из textures.res в контейнер redress.res/
Ну, или попросить продвинутого модера, чтобы он используя наш стартер, прописал в пути поиска ядром ПЗ ресурса redress.res - искать сначала в textures.res,… Wink Это только теория, но можно поэкспериментировать….


Вообще-то, в чем собственно цель, или даже, в чем задача? Добавлять динамично юнитов на игровую зону, по каким-то критериям? Если грамотно поставить задачу, то можно на нынешнем движке реализовать вполне достойное решение. Например, если есть та же задача: реализовать динамическую загрузку каких-то юнитов на игровую зону, то для этого не нужна команда «AddUnitToServer». Можно сделать библиотечный моб-файл, который и будем в последствии загружаться из других мобов командой ADDMOB(NAME.mob). В этом моб–файле нужно реализовать защиту от повторений и проверку, что такой-то перс уже существует и динамично добавлять/удалять, именовать сколько угодно (сколько выдержит комп) юнитов. Но вот вопрос, а будет ли это играбельно, Нивал такого метода не использовал….


Перейти к форуму:


Пользователи, просматривающие эту тему: 7 Гость(ей)