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
setTimeout(RecEngine,4)
Изменяйте выделенное число, чтобы увеличить или уменьшить плавность съёмки. Помните, что чем меньше это число, тем выше нагрузка на Ваш компьютер. Рекомендуемые пределы: 3-5 кадров. Если Вы выберите меньше 3х, то пойдёт бесполезная нагрузка на компьютер (да и места на Вашем HDD понадобится намного больше), а если выберите больше 5, то пропадёт плавность движения."Команды написал я, но за последствия, которые возникли после их использования, отвечаете Вы..."
На серваке отключена графическая часть (флаг serveronly), забыл?Пичаль!
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). Пример работы во вложении.Скрипты сделал я, но за последствия, возникшие в ходе их использования, отвечаете Вы...
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
Смещение в памяти | Что означает |
0x005B852C | Определяет "следующий" уровень Nox Quest. Он будет увеличен на 1 по достижению выхода и игрока кинет на следующий уровень, после указанного. Пример: Сейчас 10й уровень. Если вы задали уровень 100, то команду, по достижении всеми её игроками выхода, кинет на 101й уровень. Если задали 1000й, то кинет на 1001 и т.п. |
0x0069F968 | Определяет текущий уровень Nox Quest. Если изменить эту переменную, то мобы и обелиски сразу изменят свои показатели здоровья, а также изменится урон по игроку. Проблемы данной переменной: 1. Уже играющим клиентам новый текущий номер уровня не приходит. Придёт только после смены карты или после переприсоединения. То есть, если был уровень 10, а вы сменили на 100, то на сервере будет написано "Level 100", а у клиентов (которые были до момента смены переменной) написано "Level 10". Любой присоединившийся после смены переменной получит правильный уровень. 2. Качество вещей и количество поднимаемого золота не меняется, так как они сгенерированы до смены уровня. |
function string.right(str,len)
return string.sub(str,#str+1 - len)
end
Инструкция:function string.left(str,len)
return string.sub(str,0,len)
end
Инструкция:function string.mid(str,pos,len)
return string.sub(str,pos,pos+len-1)
end
Инструкция:function close()
os.exit();
end
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
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
Фактически это не время, которое запущен Nox.Конечно. Это процессорное время, уделенное Nox"у
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
2. Телепортация игрока в координаты. На вход функции подаётся 3 параметра: ник игрока, координата X, координата Y.function teleportToCoor(obj,x,y)
unitMove(playerGetByName(obj),x,y)
sendChat(32,'Player '..obj..' was teleported to ('..x..';'..y..')',1,1)
end
3. Телепортация игрока в точку его курсора. На вход подаётся ник этого игрока.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 строки: кого телепортировать и к кому телепортировать.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) и кому дать (ник).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
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.give('oblivionorb','Jack')
(вместо Jack впишите имя вашего персонажа).setMe()
x,y=playerMouse(me)
получаем координаты, а потомcreateObject("OblivionOrb",x,y)
dofile('ИМЯ_ФАЙЛА.lua')
crSpell(НОМЕР)
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
Не думаю, в идеале хотелось бы просто регенить ману практически сразу после затраты, и регулировать таймаут и скорость ее итерации(регена).Каким-нить cheat engine отмониторь ману на модификацию, и сделай ассемблеровскую вставку... решение готовое уже есть в сети.