NoX World - форум об игре NoX

 
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  
Сейчас онлайн стрима нет!
Сейчас на сервере никого нет!

Обязательно все ознакомьтесь с новыми Правилами Портала!

Актуальные новости:
IP сервера изменён! Новый IP: 45.144.64.229. Сервер также доступен через Westwood Online (XWIS, игру через сервер)


Важные темы:
Как играть по сети? Понятное руководство!
Правила Сервера NoxWorld.
Как помочь форуму финансово?

Автор Тема: Картостроение. Вопрос - Ответ  (Прочитано 227177 раз)

0 Пользователей и 2 Гостей смотрят эту тему.

EvilWisp

  • Постоялец
  • ****
  • Карма: 44
  • Оффлайн Оффлайн
  • Сообщений: 315
  • ChessNox
  • Awards Рука форума 2012 Медаль 'За поддержку форума - 2011' За поддержку форума 2010
    • Просмотр профиля
    • Awards

Здесь же можно по юнимоду задавать вопросы к дио?:)
Вобщем как для каждого игрока вызывать через опреденные интервалы определенную функцию?
Например от начала игры создавать возле каждого игрока какие либо объекты раз в 2 секунды. и побочный вопрос, как получить текущие координаты игрока?
Записан
Подпись:
Подпись отображается под каждым Вашим сообщением. BB коды и смайлы могут быть использованы против вас.

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

ну вообщем создаешь таблицу, в нее пихаешь всех игроков. Как то так (код с коленки)
function burnPlayer()
playerTable={}
playerTable=playerList() -- пихаем всех игроков в таблицу
for i=1,#playerTable do
 createObject('flame',unitPos(playerTable)) -- unitPos узнать координаты объекта
end
setTimeout(burnPlayer,60) -- вызываем фн каждые 60 кадров то есть 2 секунды
end
Записан
Пользуйтесь UniMod-ом.

EvilWisp

  • Постоялец
  • ****
  • Карма: 44
  • Оффлайн Оффлайн
  • Сообщений: 315
  • ChessNox
  • Awards Рука форума 2012 Медаль 'За поддержку форума - 2011' За поддержку форума 2010
    • Просмотр профиля
    • Awards

Спасибо:)
Только не работает playerTable=playerList()
пишет wrong arguments.

И где можно найти список функций, добавленных как я понимаю тобой. Такие как unitPos(), spellApply() и т.д.
Нашел файлик в архиве с юнимодом с описанием функций. там не playerList() а playersList().
Но пока не работает все равно:) пишет попытка вызывать глобальную функцию.
Записан
Подпись:
Подпись отображается под каждым Вашим сообщением. BB коды и смайлы могут быть использованы против вас.

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

function burnPlayer()
local playerTable=playerList() -- пихаем всех игроков в таблицу
for i=1,#playerTable do
 createObject('flame',unitPos(playerTable[i])) -- unitPos узнать координаты объекта
end
setTimeout(burnPlayer,60) -- вызываем фн каждые 60 кадров то есть 2 секунды
end
Вот рабочий код, мог бы чуть чуть додумать, я забыл поставить вызов определенного индекса массива. Ну код чуть дописал для красивости.
Правильная фн playerList
Пока нет описания всех фн, ну если ток в исходниках)
Записан
Пользуйтесь UniMod-ом.

EvilWisp

  • Постоялец
  • ****
  • Карма: 44
  • Оффлайн Оффлайн
  • Сообщений: 315
  • ChessNox
  • Awards Рука форума 2012 Медаль 'За поддержку форума - 2011' За поддержку форума 2010
    • Просмотр профиля
    • Awards

Появились вопросики:)
1) Почему карта работает и применяет изменения только со второго запуска? (как базу использовал файлы карты unimod) причем первый раз ругается на мою функцию, а после рехоста все работает.
2) Карта виснет:) создаются бочки вокруг меня, я их убиваю, но через какое то время нокс виснет, потом либо вылетает, либо висит до талова, как будто программа зациклилась.
3)  по юнимоду:
    а) Как можно узнать класс игрока и его разрешение экрана? из этой таблицы игроков playerTable.
    б) Как отловить событие разрушения созданой бочки, желательно с координатами и виновником)
    в) Как отловить событие респауна игрока?
    г) Как закончить выполнение setTimeout(burnPlayer,60), а то он выполняется и последующих картах. Возможно нужно как то закрывать эту функцию, и из за нее карта виснет.

   
Записан
Подпись:
Подпись отображается под каждым Вашим сообщением. BB коды и смайлы могут быть использованы против вас.

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

1) Не понимаю. мб у тебя ошибка мб что, а по идее все правильно, поменял код - рехость карту.
2) Код в студию. Сколько всего не делали такого не было, мб ты где что то зацикливаешь серьезною
3)
  а) pli=getPtrPtr(getPtrPtr(PLAYER,0x2ec),0x114) playerClass=getPtrByte(pli,0x8cb)
      если 0 о воин 1 маг 2 кон 3 - спектатор. По моему так. Разрешение пока никак.
  б) unitOnDie(Object,Function) вызывает фн и 1 параметр кто умер. Кто убил видимо                      будет в следующий версии.
  в) Либо никак, или я незнаю как. Но раз надо то мб будет реализовано.
  г) ну есть несколько методов.
     функция mapName возвращает имя карты то есть ты сначала складываешь его в  переменую, а потом каждым таймаутом проверяешь то оно или нет, если нет то ретурн, но на современной версии(еще не выпущена) таймауты вроде сами вырубаются, или есть какое то событие...
Записан
Пользуйтесь UniMod-ом.

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 186
  • Оффлайн Оффлайн
  • Сообщений: 2728
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

г) хз как в ЛУА, а в ЯваСкрипте можно так:
foo = setTimeout(...)
а для отмены:
clearTimeout(foo)
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

KirConjurer

  • Постоялец
  • ***
  • Карма: 67
  • Оффлайн Оффлайн
  • Сообщений: 246
  • User #1234!
    • Просмотр профиля
    • Awards

Можно еще вопросик?)
Что делали команды set team и set mode?
Можно ли их разблокироавть?
Если да, то как?)
Отрыл где-то пример:
set team mode coop
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

set team вроде не рабит
set mod рабит в чате - меняет тип игры
Записан
Пользуйтесь UniMod-ом.

KirConjurer

  • Постоялец
  • ***
  • Карма: 67
  • Оффлайн Оффлайн
  • Сообщений: 246
  • User #1234!
    • Просмотр профиля
    • Awards

Неа, не рабит...
Spoiler (click to show/hide)
Записан

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 186
  • Оффлайн Оффлайн
  • Сообщений: 2728
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

set mode arena робит из чата (после racoiaws-а)
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

ну мб, видимо их не сделали
Записан
Пользуйтесь UniMod-ом.

EvilWisp

  • Постоялец
  • ****
  • Карма: 44
  • Оффлайн Оффлайн
  • Сообщений: 315
  • ChessNox
  • Awards Рука форума 2012 Медаль 'За поддержку форума - 2011' За поддержку форума 2010
    • Просмотр профиля
    • Awards

Вопросы по юнимоду..


1) Как добавить фраг игроку, из таблицы который?
2) Как проверить наличие того, или иного предмета в инвентаре игрока(опять же из таблицы который)
3) Где найти названия брони/жезлов/Оружия/ всего короче, чтобы их создавать/проверять наличие? Спасибо Lithium.
4) Как задавать создаваемым предметам энчанты?
5) Можно ли сделать, чтобы созданные предметы исчезали сами, как обычные. А то они лежат до конца игры.

Заранее спасибо:)



 
Записан
Подпись:
Подпись отображается под каждым Вашим сообщением. BB коды и смайлы могут быть использованы против вас.

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Рука форума 2012 Медаль 'За фантазию и упорство в создании карт - 2011' Медаль 'Победитель II конкурса карт' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

1) Без понятия...

2) Скриптами редактора карт наличие объекта можно проверить функцией HasItem(Кто,Какой объект)

3) Названия всех объектов можно найти либо в редакторе, либо распаковывая thing.bin программой NoxModSuite.
Записан

EvilWisp

  • Постоялец
  • ****
  • Карма: 44
  • Оффлайн Оффлайн
  • Сообщений: 315
  • ChessNox
  • Awards Рука форума 2012 Медаль 'За поддержку форума - 2011' За поддержку форума 2010
    • Просмотр профиля
    • Awards

P.S. очень нужно, т.к. карту сдавать скоро:)
Записан
Подпись:
Подпись отображается под каждым Вашим сообщением. BB коды и смайлы могут быть использованы против вас.

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

1. В старой пока никак.
2.    setMe()
    for o in getInv(me) do
       print(getThingName(o))
    end

распечатает все предметы у плеера. То есть тебе проверку надо ставить и ретурнить...
4. Хм... Эначменты? в старой низя и в новой да же реализовано пока. Могу посоветовать spellApply -ить их.
5. unitDecay(item,time) удаляет предмет item через время time
Записан
Пользуйтесь UniMod-ом.

KirConjurer

  • Постоялец
  • ***
  • Карма: 67
  • Оффлайн Оффлайн
  • Сообщений: 246
  • User #1234!
    • Просмотр профиля
    • Awards

Глупый вопрос, но...
Есть ли модбокс для NewPlayer?  :nyam: :scratch_ones_head:
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Это объект у которого у юнит контролера структура ПлеерИнфо. Так что сам подумай.

Вот фн которая проверяет есть ли объект по его ноксовму имени.
function hasItem(Player,item)
    for o in getInv(Player) do
       if getThingName(o)==item then return true end
    end
return false
end
или если надо именно определенный объект который есть в переменной
function hasItem(Player,item)
    for o in getInv(Player) do
       if o==item then return true end
    end
return false
end
Записан
Пользуйтесь UniMod-ом.

KirConjurer

  • Постоялец
  • ***
  • Карма: 67
  • Оффлайн Оффлайн
  • Сообщений: 246
  • User #1234!
    • Просмотр профиля
    • Awards

Еще 2 вопросика...
1. Как юзать spellApply?
2. А с PhantomPlayer такой фокус пройдет? Вроде он недоделан, при создании и как через скрипт редактора, и как через луа - вылет...  :'(
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

1. напиши в консоли
setMe()
spellApply(me,16,me,me)
еще могут прибавлять координаты
spellApply(me,16,me,me,playerMouse(me))
то есть всего 6 параметров. Экспириминтирой и поймешь что есть что, там какой то параметр за кастующего, 2 кому урон, и еще что то. 2 параметр номер спелла по таблице.
2. Фантом вообще нихрена не сделан
Записан
Пользуйтесь UniMod-ом.

KirConjurer

  • Постоялец
  • ***
  • Карма: 67
  • Оффлайн Оффлайн
  • Сообщений: 246
  • User #1234!
    • Просмотр профиля
    • Awards

Накидал саму "таблицу":
Spoiler (click to show/hide)
Записан

ZX_Lost_Soul

  • Новичок
  • ***
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 4
    • Просмотр профиля
    • Awards

Я только начал разбираться в картостроении и никак не могу понять, как закрывать/открывать двери( Подскажите пожалуйста...
Вот я вначале иду в свойства двери и пишу в Script Name war10a:Doorzxda
Потом в скрипте Mapinitialize пишу:
Gvar201 = Object("Doorzxda")
LockDoor(Gvar201)
Но она не закрывается при загрузке карты. Что я делаю не так?
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За релиз ЮниМода За набор курсоров для Windows За разгадку главного секрета Nox Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Если ты пишешь скриптовое имя war10a:Doorzxda то и в обжекте вроде должен писать такое же.
Записан
Пользуйтесь UniMod-ом.

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

Вот я вначале иду в свойства двери и пишу в Script Name war10a:Doorzxda
war10a это название карты. если твоя карта называется не war10a то это часть имени объекта :) лучше не парься с этим и называй объекты просто, в твоем случае Doorzxda. должно сработать. еще, если ты хочешь использовать Gvar переменную ты ее должен объявить в Global'е, причем для этого должны быть объявлены все 200 предыдущих - оно тебе надо? не проще ли LockDoor(Object("Doorzxda"))   ?
Записан

horrendous1

  • Постоялец
  • ***
  • Карма: 27
  • Оффлайн Оффлайн
  • Сообщений: 158
  • King of warriors..yay.
    • Просмотр профиля
    • Galava..
    • Awards

Вот я вначале иду в свойства двери и пишу в Script Name war10a:Doorzxda
war10a это название карты. если твоя карта называется не war10a то это часть имени объекта :) лучше не парься с этим и называй объекты просто, в твоем случае Doorzxda. должно сработать. еще, если ты хочешь использовать Gvar переменную ты ее должен объявить в Global'е, причем для этого должны быть объявлены все 200 предыдущих - оно тебе надо? не проще ли LockDoor(Object("Doorzxda"))   ?



Yeah, I'll just put all possibilities to define an object.. That'd be,
using a local variable,
Var0 = Object("Doorzxda")
LockDoor(var0)


Or using a Global variable, that'd be.
GvarX = Object("Doorzxda")
LockDoor(GvarX)


Or the way that saves most bytes in the map,
LockDoor(Object("Doorzxda"))


Doorzxda is probably not the word meant..
Записан
Banana.
Расширенный поиск  
 

Страница сгенерирована за 0.112 секунд. Запросов: 21.