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

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

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

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

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


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

Автор Тема: Делимся скриптами  (Прочитано 43319 раз)

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

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #0 : 06/05/2012 04:34:00 »

Предлагаю выкладывать готовые (и рабочие, естественно :) )скрипты для Unimod'а и редактора карт, а также инструкцию по их эксплуатации здесь.

Начнём. Вот мой скрипт "записи игры". Сейчас он основан на записи скринов через определённый интервал в кадрах:

isRecording=false

function Rec()
isRecording=true
print('Запись началась')
RecEngine()
end
function RecEngine()
if isRecording == true then conExec('image');setTimeout(RecEngine,4) end
end
function StopRec()
isRecording=false
print('Запись остановлена')
end

На работу этого скрипта можно посмотреть, просмотрев ролик: http://www.youtube.com/watch?v=Sed315tMbgo

Разъясню функции:
Rec() запускает процесс записи. StopRec(), соответственно, останавливает.
RecEngine() - движок "съёмщика". В нём всего одна строка. В ней Вы можете настраивать плавность съёмки скринов:
setTimeout(RecEngine,4)Изменяйте выделенное число, чтобы увеличить или уменьшить плавность съёмки. Помните, что чем меньше это число, тем выше нагрузка на Ваш компьютер. Рекомендуемые пределы: 3-5 кадров. Если Вы выберите меньше 3х, то пойдёт бесполезная нагрузка на компьютер (да и места на Вашем HDD понадобится намного больше), а если выберите больше 5, то пропадёт плавность движения.
У меня на компьютере при съёмке данным скриптом FPS Nox'а прыгал на уровне 20. На задержке 5 - на уровне 30-35 FPS. Всё зависит от мощности Вашего компьютера.

P.S>Помните, что данный скрипт звуки не записывает! :) А это значит, что звук пока нужно записывать отдельным файлом.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Norten

  • Старожил
  • *****
  • Карма: 101
  • Оффлайн Оффлайн
  • Сообщений: 840
  • Пью пока Синвент афк...
  • Awards Лучший организатор игр 2010 За поддержку форума 2010 Лучший дизайн
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #1 : 06/05/2012 16:46:31 »

Или озвучивать с прищепкой на носу  :)

Классная тема, спасибо, Герман!
Записан
Крошка-Маг спамил ракетами до того как это стало мэйнстримом @}>->--

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #2 : 12/05/2012 23:53:18 »

Кстати мне в голову пришла идеязаставить сервак скринить последний фраг на форум. Требуется небольшой скрипт на форуме, код для Post-отправки файла кажись внутри Unimod-а уже есть, если нет - могу добавить.
Записан

Evengard

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

На серваке отключена графическая часть (флаг serveronly), забыл?
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #4 : 14/05/2012 14:02:27 »

Для удобства тестирования новых текстур и скриптов связаных с FPS, перемещением NPC и прочего, я написал скрипт, который назвал "DebugMode".
Что же делает этот DebugMode? Если в консоли ввести setDebugMode(), то произойдёт следующее:
1. Включится показ экстентов;
2. Включится показ областей взаимодействия и путей перемещения NPC (команда show ai)
3. Включится показ FPS, Ping'а, информации о тайминге, информации о количестве рисуемых объектов на экране, количество отправляемых\принимаемых байт, номер кадра с момента старта сервера и прочая информация.
4. (Самое интересное) Включится FPS ограничитель на 30 FPS.
Функция unsetDebugMode() выключает этот кошмар и возвращает всё как было :)


Быстродействие:
Первое включение скрипта: 5-60 сек.
Последующие включения скрипта: 5-25 сек.
Выключение скрипта: менее 1 сек.


Системная информация:
setDebugMode() возвращает 0 (если режим уже запущен) или 1 (если режим запущен успешно)
unsetDebugMode() возвращает 0 (если режим уже выключен) или 1 (если режим выключен успешно)
Для выполнения требуется команда racoiaws!!!
P.S>Надо быть честным со всеми, поэтому распишу код, который будет наиболее полезным:
Команда "show extents" - включает показ экстентов
Команда "show ai" - включает показ ai
Команда "show gui" - включает\отключает игровую панель
Команда "show perfmon" - включает показ Debug информации.
Команда "set frameratelimiter" - включает ограничитель FPS. "unset frameratelimiter" - выключает его. Требуется много времени при 1м включении лимита. Последующие включения проходят намного быстрее

P.P.S>И закончу переделанной фразой Рексара из игры, название которой произносить здесь опасно для жизни :) :
Цитата: 2530
"Команды написал я, но за последствия, которые возникли после их использования, отвечаете Вы..."

UPD>Простите, забыл сказать. Скрипт был написан с учётом того, что у Вас есть флаг -nolimit на EXE'шнике!
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Evengard

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

Спс что напомнил. Пора заканчивать эту лафу с нолимитом
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

Squall

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 132
  • Оффлайн Оффлайн
  • Сообщений: 1170
  • I will always be here.
  • Awards Медаль 'За написание статьи о Воине'
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #6 : 14/05/2012 18:12:45 »

Извините, товарищи, лафа лафой, только ничего, что моя ноутбучная система при всей свой крутизне выдает 20 фпс без нолимита? Я слайд-шоу смотреть не хочу. И не сказал бы, что жалкие 50 кадров, это то, что следует ограничивать. Тем более, что бытует у геймеров мнение, что в файтинги, шутеры и иные динамичные игры комфортней всего играть с фпс = 60. Другое дело, когда фпс под двести... Предлагаю тогда хоть повысить планку ограничителя до адекватного числа, если собираетесь запиливать его на сервер.
Записан
Spoiler (click to show/hide)

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #7 : 14/05/2012 18:29:45 »

Squall, параметр FPS лимитера можно настроить только переписав экзекушник. Я не встречал этот параметр в бинах или где-то ещё.
Evengard, собираешься вешать скрипт на onPlayerJoin? Имхо, тогда на него многие не зайдут (подумают, что зависли)
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Evengard

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

Если ьы фпс были просто фпсом, я б мож ничего и не говорил. Но в Ноксе на ФПС завязана вся работа игры. 1 фпс Нокса - один проход цикла обработки. А это всё - и обработка пакетов, и нажатий на кнопки, и отсылка, и отрисовка.

Другое дело что оч странно что ограничитель занижает до 20. Должен поидее до 30... Надо будет поискать на досуге что ьпм да как.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards
Делимся скриптами
« Ответ #9 : 17/05/2012 20:04:49 »

На серваке отключена графическая часть (флаг serveronly), забыл?
Пичаль!
Записан

Dio

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

В принципе можно выпилить флаг -nolimit из нокс нафиг, будет не сложно. А например на сервак нельзя будет зайти если версия < какой то)
Там нет такого определенного FPS лимитера как параметра. Нашел место где считается время и запускается следующая обработка, но разобраться с ней не смог.
Записан
Пользуйтесь UniMod-ом.

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Ты хочешь сделать FPS лимитер? Пощади нас, продвинутых геймеров!
Записан
Отец читеров

Evengard

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

Да, хочу.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Никогда не пробовал играть в какуюнить игру с фпс 25-30? =)
Записан
Отец читеров

Evengard

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

Я только на таких ФПСах и играю. А то и ниже. В т.ч. в Нокс.

А почему это столь критично для Нокса я уже объяснял.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

Katarsis

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

Evengard, а идеи завышать всем пинг вплоть до некоей цифры (скажем, 120) не возникало? Предпосылки-то, по сути, те же самые...
Записан

Evengard

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

Мощности компов хватит не всем. Вот, например даже мне. Встроенная видюха - унылая штука...
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

Katarsis

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

Так с интернетом дела и того хуже :O
Записан

Perfect

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

Ребят, вы не туда пишете...

unseen: да и твоё сообщение не по теме.
« Последнее редактирование: 09/06/2012 16:48:11 от unseen »
Записан

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Тема уже давно не обновлялась, поэтому пора добавить пару скриптов для Unimod сюда:
1. Запись ника хоста. Ник можно будет получить через hostname. (вызов функции должен быть прописан в Autoexec.rul или в функции onFirstFrame() в autoexec.lua!!!)
hostname=nil
function getHost()
local pl = playerList()
hostname=playerInfo(pl[1]).name
end
2. Улучшенное создание объекта. Теперь если вы укажете ник игрока (nick), то предмет (x) будет создан в координатах его мыши. Также вы можете получить последний созданный объект через переменную lastCreatedObj
--Create Object At Player's Mouse
lastCreatedObj=nil
function cr(x,nick)
 if nick==nil then nick=hostname end
 local r
 r=createObject(x,playerMouse(playerGetByName(nick)))
 if r==nil then print('ERROR>Unable to create object "'..x..'" at '..nick..'\'s mouse. Invalid object.') else lastCreatedObj=r end
 return r
end
--
3. Скрипт, который я называю: "Как заставить камень\Урчина\Гекубу\Некроманта\Игрока "CrazyBrony"\Кого_угодно заговорить?".
function sayobj(text,obj)
if obj==nil then obj=playerGetByName(hostname) end
createBubble(obj,text)
end
В качестве аргументов передаётся текст (text) и объект-userdata (obj). Пример работы во вложении.

Здесь не используется слишком много хитрых функций. Только то, что заложено разработчиками Unimod 0.6 pre-beta.
В 1м коде достаётся 1 игрок из игровой таблицы и значение параметра name заносится в hostname переменную.

2я функция не намного сложнее. Здесь изменён источник с me на функцию возврата игрока(playerGetByName(nick)). Если код не сработал и в консоли появилось "Not found", значит игрока с заданным ником нет на сервере. Если ник не указан, то будет взят игрок-хост(см. 1й код)

3я функция это почти то же самое, что и просто createBubble, но в этой функции предотвращена передача пустого значения nil (вместо nil будет передан игрок-хост (см. 1й код)) Если как объект будет передан игрок, то над ним появится облако подобное сообщению в чате, но регистрации в логе консоли не будет, как в команде say.

Цитата: 2530
Скрипты сделал я, но за последствия, возникшие в ходе их использования, отвечаете Вы...
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Evengard

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

Вообще ник хоста можно получить всегда (без необходимости onFirstFrame) при помощи playerInfo(playerGetById(31)).name
ID хоста всегда 31, нумерация всех остальных с нуля, по очереди кто заходит.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Решил обнародовать изменение уровня Nox Quest. Код здесь:
SYS_MEMDATA_BUFFER=nil
function getQuestLevel()
getMemData("5997868","int")
end
function getMemData(address, datatype)
local gamedir=getGameDirectory()
os.execute(gamedir.."\\memeditor\\nox_mem.exe get "..datatype.." "..address.." "..gamedir.."\\memeditor\\buffer.dat")
setTimeout(continueGettingData,90)
end
function continueGettingData()
local gamedir=getGameDirectory()
f = io.open(gamedir.."\\memeditor\\buffer.dat","r")
while true do
        line = f.read(f)
        if not line then break end
        print (line)
        end
end
function setIntMemData(address, value)
local gamedir=getGameDirectory()
os.execute(gamedir.."\\memeditor\\nox_mem.exe set int "..address.." "..value)
end
function setQuestLevel(level)
if type(level)~="number" then return end
setIntMemData("5997868",level)
setIntMemData("6945128",level)
end

Инструкция:
1. Создайте новый lua файл и скопируйте код туда.
2. Скачайте архив с программой memeditor (8 KB) и распакуйте его в корневую папку Nox.
Убедитесь, что nox_mem.exe лежит в папке memeditor!
3. Запустите Unimod. Загрузите ваш файл lua. Для установки левела используйте функцию setQuestLevel(новый уровень в виде числа). Для его чтения: getQuestLevel(). Значение функции будет лежать в SYS_MEMDATA_BUFFER в виде числа - текущего уровня

Примечание:
Поскольку в Unimod 0.6 нет работы с памятью напрямую (только через некие юнитконтроллеры), мне пришлось реализовать программу memeditor. Она просто меняет\читает данные из памяти. Существенный недостаток программы: сервер альтабается.
Также я полный нуб в плане кодинга для юнимода и несмотря на то что вышенаписанное работает, я не могу сказать, что код получился удачный. Если кто реализует лучше (а ещё лучше, если это добавят в Unimod) буду только рад.

Дополнительная техническая информация:
Уровень Nox Quest определяется двумя DWORD переменными.
Смещение в памятиЧто означает
0x005B852CОпределяет "следующий" уровень Nox Quest. Он будет увеличен на 1 по достижению выхода и игрока кинет на следующий уровень, после указанного. Пример: Сейчас 10й уровень. Если вы задали уровень 100, то команду, по достижении всеми её игроками выхода, кинет на 101й уровень. Если задали 1000й, то кинет на 1001 и т.п.
0x0069F968Определяет текущий уровень Nox Quest. Если изменить эту переменную, то мобы и обелиски сразу изменят свои показатели здоровья, а также изменится урон по игроку. Проблемы данной переменной:

1. Уже играющим клиентам новый текущий номер уровня не приходит. Придёт только после смены карты или после переприсоединения. То есть, если был уровень 10, а вы сменили на 100, то на сервере будет написано "Level 100", а у клиентов (которые были до момента смены переменной) написано "Level 10". Любой присоединившийся после смены переменной получит правильный уровень.
2. Качество вещей и количество поднимаемого золота не меняется, так как они сгенерированы до смены уровня.
Несмотря на то, что переменные DWORD типа, не рекомендую поднимать уровень выше 65535 (переменная отображаемого лвла обнуляется + моя программа поддерживает только INT пределы.) Также не рекомендуется писать разные значения для этих переменных. Меняйте оба места.

Я надеюсь что описал понятно. Если будет найдены ещё переменные\данные, то я опишу их здесь.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Evengard

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

Вообще-то есть функции правки памяти в UniMod-е, но они отсутствуют намерено, чтобы такие изменения вносить непосредственно в сорцы ЮниМода - в основной репозиторий. Рекомендую обновить сам ЮниМод в этой связи скорее.
Попробую запилить в ЮниМод на досуге если кому-то это интересно.
« Последнее редактирование: 22/05/2013 10:25:32 от Perfect »
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Работая с lua, я столкнулся с проблемой получения строки. Алгоритм непривычный, если сравнивать с VB. Поэтому я написал свои функции получения подстрок. Думаю, это может пригодится кому-нибудь.
Получение правой части строки:
function string.right(str,len)
return string.sub(str,#str+1 - len)
end
Инструкция:
string.right принимает 2 значения как в старом добром VB: строку и длину.

Получение левой части строки:
function string.left(str,len)
return string.sub(str,0,len)
end
Инструкция:
string.left также принимает 2 значения: строку и длину

Получение подстроки.
function string.mid(str,pos,len)
return string.sub(str,pos,pos+len-1)
end
Инструкция:
string.mid возвращает подстроку подобно string.sub, но запрашивает вместо индекса последнего индекса длину строки (подобно string.Substring в C# или Mid в VB). Иными словами:

string.mid("INTEGER",2,4) = string.sub("INTEGER",2,5) = "NTEG"
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Evengard

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

string.sub аналогичен substr во многих ЯП (C/C++, PHP), честно говоря особо не переучивал бы людей. Впрочем, может кому и пригодится.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Я не переучиваю. Мой код - решение проблемы для тех, кто не может приспособиться к стандартному string.sub
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Давненько я не пополнял эту тему. Надо исправить.

Мгновенное закрытие Nox'а (как если бы завершили процесс в диспетчере задач).
Код: (lua) [Выделить]
function close()
os.exit();
end

Узнать сколько времени ты играешь в Nox:
function NoxExecTime()
return os.clock()
end

Определение здоровья юнита в Unimod сейчас работает неправильно. Если вы запросите хп мага, то вполне можете получить 212341, вместо желаемых 75.

Данная обёртка это фиксит:
Код: (lua) [Выделить]
function getUnitHP(unit)
if unit==nil then return nil end
local fhp=unitHP(unit)
while (fhp - 65536)>=0 do
fhp=fhp - 65536
end
return fhp
end
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Perfect

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

Spoiler (click to show/hide)
Записан

Dio

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

os.clock()
Returns an approximation of the amount in seconds of CPU time used by the program.

С lua.org. Фактически это не время, которое запущен Nox.
Записан
Пользуйтесь UniMod-ом.

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Насколько я помню, время с момента хоста. Во всяком случае давно тестировал - совпадало.

Perfect, у тебя есть решение получше? Может опишешь, а не спойлерами кидаться будешь.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

KirConjurer

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

function unitGetHPSafe(unit)
  local hd = getPtrPtr(unit, 0x22C) -- Health Data
  if not hd then return 0 end
  return getPtrShort(hd, 0)
end
Кстати, почти любой неразрушаемый юнит можно сделать разрушаемым
function unitNewHData(unit, hp)
  local hd = memAlloc(0x14)
  setPtrPtr(unit, 0x22C, hd)
  setPtrShort(hd, 0, hp) -- current hp
  setPtrShort(hd, 2, hp) -- prev hit hp
  setPtrShort(hd, 4, hp) -- max hp
  return true
end
 
Записан

Evengard

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

os.clock()

Не время это ни фига. А "сколько времени CPU обрабатывал ТОЛЬКО Нокс". Сложно объяснить. Процессор же ведь постоянно переключается между задачами (мультизадачность так и делается ж ведь) и эта функция показывает, сколько процессор уделил времени Ноксу.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Цитировать
Фактически это не время, которое запущен Nox.
Конечно. Это процессорное время, уделенное Nox"у
Записан
Отец читеров

Evengard

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

Я-то знаю. Пытаюсь объяснить, что такое "процессорное время".)
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Да, вроде, ничего сложного. 1 секунда 100% - ой загрузки 1 - го CPU = 1 секунда процессорного времени. 1 секунда 50% - ой загрузки 1 - го CPU = 0.5 секунды процессорного времени и тд.
Записан
Отец читеров

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Надо подновить чутка тему. А то сильно увлёкся исследованиями, что этот тред совсем вылетел из головы.
Сегодня я выложу часть скриптов, используемые на моём сервере по сей день. В них вы не найдёте чего-то принципиально нового - эти функции просто удобные обёртки под Unimod функционал.

1. Мгновенное убийство игрока (даже под неуязвимостью бесконечной длительности). Функция "перегружена": если передано число, то будет убит игрок по индексу из таблицы игроков; иначе будет убит игрок по нику.
Код: (Lua) [Выделить]
function kill(nick)
local obj
local msg
if type(nick)=="number" then
obj=playerList()[nick]
else
obj=playerGetByName(nick)
end
buffApply(obj,16,1)
sendChat(32,'Slayed player '..playerInfo(obj).name,1,1)
end
Spoiler (click to show/hide)
2. Телепортация игрока в координаты. На вход функции подаётся 3 параметра: ник игрока, координата X, координата Y.
Код: (Lua) [Выделить]
function teleportToCoor(obj,x,y)
unitMove(playerGetByName(obj),x,y)
sendChat(32,'Player '..obj..' was teleported to ('..x..';'..y..')',1,1)
end
3. Телепортация игрока в точку его курсора. На вход подаётся ник этого игрока.
Код: (Lua) [Выделить]
function teleportToCur(obj)
x,y=playerMouse(playerGetByName(obj))
unitMove(playerGetByName(obj),x,y)
sendChat(32,'[SERVER]Player '..obj..' was teleported to ('..x..';'..y..')',1,1)
end
4. Телепортация игрока к игроку. На вход передаётся 2 строки: кого телепортировать и к кому телепортировать.
Код: (Lua) [Выделить]
function teleportToPlayer(pl1,target)
local x,y=unitPos(playerGetByName(target))
unitMove(playerGetByName(pl1),x,y)
sendChat(32,'[SERVER]Player '..pl1..' was teleported to player '..target,1,1)
end
5. Дать игроку предмет в инвентарь. На вход подаётся 2 строки: что дать(имя из thing.bin) и кому дать (ник).
Код: (Lua) [Выделить]
function give(obj, nick)
if nick==nil then nick=hostname end
if nick==nil then return 0 end
x=createObjectIn(obj,playerGetByName(nick))
print('Object "'..obj..'" now in '..nick.."'s inventory!")
return x
end
Spoiler (click to show/hide)

Мои скрипты становятся всё больше и мне всё труднее находить что-то более-менее завершенное и готовое к размещению. В данный момент я работаю над большой таблицей - она должна стать частью большой документации по Unimod (ибо нормальной документации по прежнему нет). Из запланированного пока есть только спецэффекты. Так что тема не будет пополняться в ближайшие месяца два как минимум.
А вообще, мне интересно, помогло ли кому-нибудь когда-нибудь то, что здесь выложено?
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Фикс для получения здоровья (выглядит криво, но работает):
Код: (Lua) [Выделить]
SYS_unitHP=unitHP
function unitHP(unit, amount)
if(amount==nil) then
local hpdata = getPtrPtr(unit, 0x22C)
if not hpdata then return nil end
return getPtrShort(hpdata, 0)
else
SYS_unitHP(unit,amount)
end
end
Внимание! Вызывать фикс нужно только один раз. Чтобы не вызвать наверняка, положите функцию в onFirstFrame.
По хорошему надо уже библиотеку фиксить.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Evengard

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

Кто тебе мешает сделать это? :) Сорцы юнимода открыты.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

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

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Отсутствие комментариев и скачиваемости моих поделок. Это просто будет бесполезная трата времени.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

Dio

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

Если ты сделаешь вещь, которой реально можно будет пользоваться, то тут можно будет найти пару человек, которых она заинтересует.
Ты не хочешь тратить время на фикс библиотеки, а кто-то не хочет смотреть кусочки кода для глючного мода. Кажется, круг замкнулся.
Можешь не фиксить, а переписать, там в бранче UniMod2 лежит.... Остановился на создании юнитов.
Записан
Пользуйтесь UniMod-ом.

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Здравствуйте.
Я снова поставил нокс, дабы пройти кампанию спустя много лет, еще раз.
Но на это траз мне хочется поиграться с конфигами, с этим проблем нет, все необходимое я нашел. Только редактор карт вылетает.
Юнимод установил (правда он не запускается через NoxPatched_UniMod.exe, только через NoCD_U.exe), но как использовать эти функции в кампании?
В autoexec.lua я добавил функцию добавления предмета в инвентарь, хотел добавить посох ярости сразу или что нибудь еще, но не знаю как вызывать эту функцию.
Spoiler (click to show/hide)
Записан

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Открываете консоль и в ней пишете:
give('oblivionorb','Jack')
(вместо Jack впишите имя вашего персонажа).
Далее жмёте Enter и получаете Посох Забвения к себе в карман.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Спасибо большое за такой быстрый ответ, я даже успел найти это же решение на другом источнике.
К сожалению ваш вариант мне не подошел, потому что умолчательное имя персонажа я оставил на русском, а в игре переключиться или скопипайстить русского "Джек" мне не удалось.


Другой вариант выглядит так.
В начале функцией в консоли игры
setMe()
x,y=playerMouse(me)
получаем координаты, а потом
createObject("OblivionOrb",x,y)
Эти три строчки я внес в пустой текстовый файл с расширением .lua а в игре просто выполняю
dofile('ИМЯ_ФАЙЛА.lua')
Вот список id обьектов что мне удалось найти пока что.
А вот список id именно предметов .

Подскажите пожалуйста по еще нескольким вопросам:
1. Каким образом можно уменьшить затратность маны именно заклинанием молнии?
Потому что в конфигаг я находил только кол-во маны для обычных заклинаний.
2. Хотелось бы реализовать быстрое автоматическое восполнение маны, может луа скриптом? Но я не умею писать на нем к сожалению.
3. Можно ли сделать Посох молний самозаряжающимся?
4. Где можно найти наиболее полный список id предметов?
5. Как можно суммонить себе spellbooks, книги с заклинаниями? Потому что функция crSpell(spellN) конечно создает книги, например crSpell(SPELL_MAGIC_MISSILE), но игра говорит что я не могу ее использовать (при этом 2 уровня уже есть). Оказывается spellN означает номер, по этому книги не читабельны вообще. Но я не знаю где найти номера этих id получается.
Я сейчас подбором выписываю все заклинания, и отпишусь по результату.
« Последнее редактирование: 18/06/2015 23:34:19 от det »
Записан

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Раскладка переключается через Scroll lock.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Странно, у меня раскладка не переключается через скроллок.
На радостях возможности альттабится благодаря sdl фиксу из юнимода, я сделал для вас, товарищи, список всех книг заклятий что выдолбил из клавиатуры:

Появляются они у курсора, командой
Цитировать
crSpell(НОМЕР)

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



Spoiler: Колдун (click to show/hide)
Spoiler: Маг (click to show/hide)
Spoiler: Вылеты (click to show/hide)
Остановился на 144, для воина способности видимо получаются по другому, как найду как - отпишусь.

На этом список закончился. Если нужно - переведу на англ и размещу в соответствующей теме.


Помогите мне пожалуйста с вопросами что я описал выше (кто может), уж очень хочется пройти одну из любимых игр с интересом "по-своему" ))
« Последнее редактирование: 19/06/2015 00:52:24 от det »
Записан

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Воинская книжка - другой предмет кажись
Записан

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Да уж. Сюда никто не глянул: http://forum.noxworld.ru/modding/kooto-o-mo/?message=121340.
Специально сделал, дабы сил не тратил лишних.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Увы, не нашел, плохо искал )
Зато теперь список отсортирован)
К стати мне не удалось найти id оружия для мага, которое зачаровано, например "посох полний перезарядки", обычный я спавнить могу, а вот перезарядки как то не нашел.

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

То же с жизнями, что бы они восстанавливались оперативно, но при получении урона - реген прекращался, на некоторое время после получения урона, а потом восстанавливал постепенно.
« Последнее редактирование: 19/06/2015 19:00:15 от det »
Записан

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

было получение и задание хитов юнита, unitHP(newValue)
https://github.com/Evengard/UniMod/blob/master/unit2.cpp
про ману - кажись нет, но тривиально написать
Записан

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Спасибо, правда я надеялся это сделать возможностями юнимода, через lua, а с C++ я не знаком, увы)
Как альтернатива я смог вычислить значения в памяти через cheat engine, там на луа скрипт написать уже можно.
И естественно задать нужные параметры для скорости восстановления, модификаторы и пр.
Да и удобно, что можно воспользоваться встроенным генератором уже трейнера экзешника, своего, без вирей.
Записан

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

А какой адрес для регена маны? его ж можно в сишник вписать и через юнимод вывести
Записан

Vteobitov

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

У меня на компьютере при съёмке данным скриптом FPS Nox'а прыгал на   уровне 20. На задержке 5 - на уровне 30-35 FPS. Всё зависит от мощности   Вашего компьютера.
Записан

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

В принципе так оно и есть. Зависит от 2 вещей:
1. Скорость записи на диск
2. Скорость реагирования Nox'а на команду.

Можно попробовать поэкспериментировать с FPS лимитером...
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

А действительно, как можно соорудить реген маны?
Мне не доступно накодить это в С, но я массу уже наковырял через NXModSuite правя игровые файлы *.bin и играясь со спавном разных предметов с любыми параметрами, но вот регем маны пока не приобрел.

Я заметил, что чем выше макс ману ставлю в gamedata.bin, например 4000, тем быстрее она восстанавливается.
Но хочется поиграть с оригинальным колвом 170, но что бы был скрипт который ее регенит.

Как вот например мне скинул один хороший человек. Он мне сказал что без его версии юнимода работать не будет ибо нету AddMana.
У кого есть юнимод в котором это будет работать?
Или может весь нокс? Сбросьте пожалуйста.

local uc = getPtrPtr(owner, 0x2EC)
    local plrAction = getPtrByte(uc, 0x58)
    -- Если игрок не двигается, каждый третий фрейм добавляем единицу маны
    if (plrAction == 13 or plrAction == 10) then
        if (math.mod(getFrameCounter(), 3) == 2) then
            playerAddMana(owner, 1)
        end
    end
Записан

Perfect

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

В скрипте учтены действия эмоций (смех, точка, насмешка)?
Записан

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Не думаю, в идеале хотелось бы просто регенить ману практически сразу после затраты, и регулировать таймаут и скорость ее итерации(регена).
Вот и спрашиваю что может понадобится что бы это реализовать, конечно для меня это трудновато пока, но если ни у кого нет готового решения, то прийдется делать самому, но пока не знаю как.
Записан

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Не думаю, в идеале хотелось бы просто регенить ману практически сразу после затраты, и регулировать таймаут и скорость ее итерации(регена).
Каким-нить cheat engine отмониторь ману на модификацию, и сделай ассемблеровскую вставку... решение готовое уже есть в сети.

Цель у тебя какая: написать свой скрипт на юнимоде или цель получить бесконечную ману?
Записан
Отец читеров

det

  • Пользователь
  • *****
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 16
    • Просмотр профиля
    • Awards

Да, задача больше написать рабочий скрипт на юнимоде, что бы рабочий вариант, который можно расшарить для всех.
Если конкретнее, то нужно что бы мана регенелась так же как возле кристалла маны (но медленнее медленнее). Только без кристаллов)
Записан
Расширенный поиск  
 

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