-
Posts
94 -
Joined
-
Last visited
Posts posted by KruTolic_rus
-
-
Ну машина достаточно сильная:
Intel Xeon E3 2.1 CPU 4 ядра
4 RAM
Но часто вижу скачки от 5% до 60-70%...и виноваты зомби.
В performancebrowser'e смотрел?
В perfomancebrowser мне,когда я 1 на сервере + 60 зомби показывает нагрузку 2-4%
Когда же я с 40 игроками,то у меня падает сервер через нагрузку на 1 ядро процессора.она достигает больше 50%
Но так как я не додумался поставить ВДС,то на хостинге мне выключали за это сервер.Жутко бесило.Но щас будем ставить вдс.И на него до 250 игроков.А что бы выдержало 250 игроков и 200 зомби - нужна оптимизация....
-
Зомби РП? Спасибо, поржал.
Проживешь дольше.Не знаю,что у тебя там в голове мелькает,А вот у меня уже есть идейки.
1) Лидер и вояки.Ведь организованные силы куда более интересней,чем по одиночке,верно?
Круто,когда вас в 5 посылают на задание,а вы встречаете выживших,которые тоже,кстати,выживают вместе.
Тут и будет цель РП.
2) Люди будут гражданскими,военными.
+ некоторые организации и банды.У всех у них будет главным это коллектив и выполнение обязанностей.
3) Зомби будут страшными только когда вы играете один.А вдруг появятся зомби,которые были с улучшенным геномом и вам настанет каюк?
А почему ? Локальный чат поможет сделать тактику и убить мерзавца.
4) Сервер убивает сразу 3 зайцев:
/1: Люди находят друзей.Соответственно играют дольше.Им не скоро надоест взаимодействие с остальными.
/2: Люди общаются друг с другом.Это куда лучше,чем делать овер 9999 миссий в надежде,что люди не забросят твой сервер.
/3: Оригинальность.Ваша реакция оправданна.Таких серверов нету в списке.А если и есть,то они домашние.Либо же,их очень мало.Это привлекает людей.Людям надоело Day Z.Они хотят наоборот.Так почему же не создать эту виртуальную реальность? Зачем убивать своих же? Если можно бандами воевать с зомби,или же,если вы в собственной организации,нападать на обьекты,которые вас обидели.Вместе.
Поэтому,я считаю,что это отличная идея.И вполне вероятно для реализации.Но нужны зомби,которые смогут это все сделать.У меня нету времени делать их самому.
-
Ну машина достаточно сильная:
Intel Xeon E3 2.1 CPU 4 ядра
4 RAM
Но часто вижу скачки от 5% до 60-70%...и виноваты зомби.
-
Не думаю, что за 1000 руб тебе кто-то будет писать такой ИИ. Я так понимаю, это для дейз мода ?
Оффтоп:
Если поставить сервер на Тяньхэ-2, то любой скрипт и процента не займет
Это я к тому, что кто-то может и сделает вам, а у вас машина дерьмо какашка и старания - зря
Почему же ? Разве сервер МТА может хорошо распределять нагрузку по ядрам ? Я не буду ничего утверждать, точно не знаю, но на моей ВДСке раньше(оптимизировал, теперь на одном все нормально) на второе ядро отходило только 10-20 процентов, когда первое в 100% забивалось.
Не для Day Z.У меня есть собственный Zombie RPG.А еще я делаю Зомби РП. Никакого отношения кроме как темы они не имеют.У них общее только зомби.
-
Здраствуйте!
Вообщем,мне нужно,что бы за деньги написали мне скрипт на зомби(как хотите,но играбельно.И что бы везде спавн был рядом с игроком)
Что требуется:
1) Зомби должны ходить(анимация PedWalk)
2) Зомби должны быть максимум 10 на 1 человека(больше не спавниться,если зомби уже 10)
3) Зомби должны атаковать.Просто атаковать.Находить и бить.Любого чела рядом.На дистанции до 60 юнитов.
4) Зомби должны быть хорошо оптимизированы(это,пожалуй,самое главное! 200 зомби должны давать нагрузку не более 20% на сервер!)
5) У зомби должны быть модельки.Хотя бы 20.Разрешается брать их с slothbot
6) Зомби спавнятся везде.(Я потом сам доделаю конкретику против спавна на крышах и прочее.)
7) Триггер ZombieProof для сейф зон.Перенесите его...
Почему мне не нравится slothbot? Смотрите пункт 2.У меня это не получилось сделать.У вас есть такая возможность.
Насчет настроек для зомби(их кол-во,анимации и пр.) - от вас это не требуется.Ничего лишнего.Никаких прыжков,никаких там кушаний песка или земли.
Повторяю: оплата есть!!
Могу предложить до 1000 руб.Но я расцениваю это все в 550-650...(я вам не запрещаю брать slothbot зомби.Мне нужна именно оптимизация,и лимит на человека.Не более того.Остальных ограничений нету.)
Пишите в ЛС.
-
Можно попробовать нанять профессиональных разработчиков на некоторое время,а деньги собирать с kickstarter.
Кто хотел присоединится к МТА уже присоединился. Вы представляете как это вообще будет происходить? Прежде чем они приступят к хоть какой-либо работе, им потребуется минимум месяц для изучения всего, никто на это не пойдет.
1) Переписать список серверов.(На подобии КС 1.6,где чем меньше пинг,тем выше сервер)
Стандартная сортировка по пингу не айс? Давайте перепишем, чтобы сортировало ТОЛЬКО по пингу.
2) Добавить больше функций с использованием энвиромента(сервера PVE очень даже кстати)
Куда уже больше. Все вокруг можно изменить/заменить/наложить текстуры. Что еще можно придумать?
3) Массовая реклама МТА с использованием новейших нововведений,А также тех,которые привлекают игроков.
Проблема с рекламой МТА только в русскоговорящих странах, за рубежом все с этим хорошо.
Сейчас очень популярен Дэй Зи мод,верно? Это внесло свою частицу в популярность и развитие МТА.А если сделать еще моды,например,Jail-mod(Зона 51 + маппинг,парочка скриптов - готово.).
Разработчики дали возможность писать игровые режимы третьим лицам. Каждый пользователь может написать то, что хочет, а не то, что нужно обществу. Так что никто не будет этого писать, кроме Вас.
Сейчас моя команда занимается созданием двух модов: Survive,drift.Скорее всего,они будут в общем доступе.Я бы не против сделать мта популярнее,но на это надо больше времени,коего сейчас мало.Поскольку я сейчас занимаюсь исключительно Кс,то не могу следить за интересами игроков,играющих.
Ресурсы на Пве ограниченны.Мы не имеем возможности создавать новое,а лишь редактировать старое.(машины,оружие)
Как ты намерен написать,например что то схожее с Раст,если нет возможности отслеживать энвиромент полнрстью? Карта сама по себе,ее можно лишь менять.Все..
Пве это не только тупое бегание по новой карте свободно,это еще и взаимодействие с ним.Такого пока что не имеется.Маркеры и колшейпы - не ахты.
-
Можно попробовать нанять профессиональных разработчиков на некоторое время,а деньги собирать с kickstarter.
Люди предложили отличную идею: Они готовы платить за то,что бы добавлялись функции в движке МТА,то есть,команды для Lua.Сейчас нужно сделать лишь три вещи:
1) Переписать список серверов.(На подобии КС 1.6,где чем меньше пинг,тем выше сервер)
2) Добавить больше функций с использованием энвиромента(сервера PVE очень даже кстати)
3) Массовая реклама МТА с использованием новейших нововведений,А также тех,которые привлекают игроков.
Сейчас очень популярен Дэй Зи мод,верно? Это внесло свою частицу в популярность и развитие МТА.А если сделать еще моды,например,Jail-mod(Зона 51 + маппинг,парочка скриптов - готово.).
P.S>Я,даже,и не против бы помогать улучшать движок МТА.Но я хочу все делать наверняка - либо сейчас мои знания маловаты для того,что бы написать очень годное,которое бы позволило намного улучить мультиплеер игры.
-
Здраствуйте...
Я менял код slothmana на зомби под себя,вроде бы,ничего такого трудного не было,поэтому ничего не спрашивал,но когда я сделал так,что бы в радиусе 50 метров было не больше 10 зомби,я обнаружил,что это глобальная задача.То есть,максимум,у меня может быть на сервере 10 зомби.Они делятся между игроками,ведь если больше 10,то зомби уже не спавняться.
Мне нужно провести проверку так,что бы брало всех игроков и у каждого индивидуально была проверка,а потом,если около него больше 10 зомби,то именно возле него прекратить спавн.А другим игрокам ничего не запрещать,пока тоже не наберут 10 зомби...
Обьяснил как то...может и поняли.
Вот кусок кода:
server:
addEvent( "onZombieSpawn", true ) function RanSpawn_Z ( gx, gy, gz, rot) local safezone = 0 local allradars = getElementsByType("radararea") for theKey,theradar in ipairs(allradars) do if getElementData(theradar, "zombieProof") == true then if isInsideRadarArea ( theradar, gx, gy ) then safezone = 1 end end end if safezone == 0 then LimitZombie = 0 local allplayers = getElementsByType ( "player" ) for ZombKey,theZomb in ipairs(everyZombie) do if isElement(theZomb) then if (getElementData (theZomb, "zombie") == true) then far = 1 local Zx, Zy, Zz = getElementPosition( theZomb ) for theKey,thePlayer in ipairs(allplayers) do local Px, Py, Pz = getElementPosition( thePlayer ) local distance = (getDistanceBetweenPoints3D( Px, Py, Pz, Zx, Zy, Zz )) if distance < 50 then LimitZombie = LimitZombie + 1 end if distance > 30 then chaseanim = "sprint_civi" end if distance < 30 then chaseanim = "run_civi" end end end end end if table.getn ( everyZombie ) < newZombieLimit and LimitZombie < 10 then if not rot then rot = math.random (1,359) end randomZskin = math.random ( 1, table.getn ( ZombiePedSkins ) ) local zomb = createPed( tonumber( ZombiePedSkins[randomZskin] ), gx, gy, gz ) if zomb ~= false then setElementData ( zomb, "zombie", true ) table.insert( everyZombie, zomb ) setTimer ( function (zomb, rot) if ( isElement ( zomb ) ) then setPedRotation ( zomb, rot ) end end, 500, 1, zomb, rot ) setTimer ( function (zomb) if ( isElement ( zomb ) ) then setPedAnimation ( zomb, "ped", chaseanim, -1, true, true, true ) end end, 1500, 1, zomb ) setTimer ( function (zomb) if ( isElement ( zomb ) ) then setElementData ( zomb, "status", "idle" ) end end, 2000, 1, zomb ) triggerClientEvent ( "Zomb_STFU", getRootElement(), zomb ) end end end end addEventHandler( "onZombieSpawn", getRootElement(), RanSpawn_Z )
И на всякий... спавн зомби
function SpawnZombie () local pacecount = 0 while pacecount < 7 do --7 ZOMBIES AT A TIME TO PREVENT FPS DROP if (table.getn( everyZombie )+pacecount < newZombieLimit ) and (ZombieStreaming == 1) then local xcoord = 0 local ycoord = 0 local xdirection = math.random(1,2) if xdirection == 1 then xcoord = math.random(15,40) else xcoord = math.random(-40,-15) end local ydirection = math.random(1,2) if ydirection == 1 then ycoord = math.random(15,40) else ycoord = math.random(-40,-15) end local liveplayers = getAlivePlayers () if (table.getn( liveplayers ) > 0 ) then local lowestcount = 999 local lowestguy = nil for PKey,thePlayer in ipairs(liveplayers) do if isElement(thePlayer) then if (getElementData (thePlayer, "dangercount")) and (getElementData(thePlayer, "zombieProof") ~= true) and (getElementData(thePlayer, "alreadyspawned" ) == true) then if (getElementData (thePlayer, "dangercount") < lowestcount) then local safezone = 0 local gx, gy, gz = getElementPosition( thePlayer ) local allradars = getElementsByType("radararea") for theKey,theradar in ipairs(allradars) do if getElementData(theradar, "zombieProof") == true then if isInsideRadarArea ( theradar, gx, gy ) then safezone = 1 end end end if safezone == 0 then lowestguy = thePlayer lowestcount = getElementData (thePlayer, "dangercount") end end end end end pacecount = pacecount+1 if isElement(lowestguy) then triggerClientEvent ( "Spawn_Placement", lowestguy, ycoord, xcoord ) else pacecount = pacecount+1 end else pacecount = pacecount+1 end else pacecount = pacecount+1 end end end
Заранее спасибо за помощь!
-
и не будут.
addEventHandler ( "GetMoneyS", getRootElement(), GetMoneyS ) addEvent ( "onSpecialEvent", true )
,а надо:
addEvent ( "GetMoneyS", true ) addEventHandler ( "GetMoneyS", getRootElement(), GetMoneyS )
triggerServerEvent ( "GetMoneyS", localPlayer,hitElement)
if ( localPlayer == hitElement ) then ---/// к чему эта проверка? МБ просто if hitElement then?
-
Хорошо,почитаю.
local MoneyMarker = createMarker(2490,-1665,12.5, "cylinder", 5, 255, 177, 133,177) function Check(thePlayer) if isElementWithinMarker(thePlayer, MoneyMarker) then outputChatBox("WTF1") timer = setTimer ( getMoney, 1000, 0) end end addEventHandler("onMarkerHit",MoneyMarker,Check) function getMoney(thePlayer) if isElementWithinMarker(source, MoneyMarker) then givePlayerMoney(source,1) else killTimer(timer) end
Какой ставить аргумент здесь?
В setPlayerMoney и "isElement..."
...
"@Bad Argument"
_____
Нужна проверка,находится ли человек в маркере,если да,то дать ему 1$,если нет,уничтожить таймер.
Не могу понять зачем вы так закручиваете простой скрипт? Не проще ли сделать так:
local MoneyMarker = createMarker(2490,-1665,12.5, "cylinder", 5, 255, 177, 133,177) function Check(thePlayer) if isElementWithinMarker(thePlayer, MoneyMarker) then outputChatBox("WTF1",getRootElement()) timer = setTimer ( function() givePlayerMoney(thePlayer,1) end , 1000, 1) ----/// 3 сет в вашем таймере был "0".То есть,этот скрипт повторяется вечно.Зачем? end end addEventHandler("onMarkerHit",MoneyMarker,Check)
-
Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил):
function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] outputChatBox(getPlayerName(source).." умер!") end addEventHandler("onPlayerWasted",getRootElement(),playerDied)
объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен.
Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте
(totalAmmo, killer, killerWeapon, bodypart) --- спешлы которые можно использовать,если те есть в addEventHandler эвенте(событии)
https://wiki.multitheftauto.com/wiki/OnPlayerWasted -- почитай,поймешь что за что отвечает.В каждом событии РАЗНЫЕ спешлы и они идут по порядку!!! Если первое,это Игрок,значит будь он source,будь он thePlayer или ped,и даже weapon это будет Игрок! Ты задаешь лишь название к спешлу который привязан к событию
-
ДэйЗи...ДэйЗи...типичный и везде воняющий ДэйЗи! Их же дофига,зачем вам еще ДэйЗи??
-
Была такая проблема.Но можно использовать выше названный триггер.На сервере создаешь маркеры.На них евент входа,а внутри функции пишешь триггер.hitPlayer указываешь в функции( function NAME (hitPlayer)) и выводишь что вызов для hitPlayer.А в клиенте принимаешь триггер.Вроде бы все... В мта часто требуется подумать и решить сложнейшим путем,чем пытаться делать "легко",это редко получается
Обьясню все,что писал выше на примере:
использовал мой опыт,когда делал свой carshop
CarShop1 = createMarker(-2475.15942, 2303.83252, 3.98438, "cylinder", 2, 255, 0, 0) function TriggerClientMenu (thePlayer) triggerClientEvent ( thePlayer, "onMenuShow", thePlayer, thePlayer ) end addEventHandler( "onMarkerHit", CarShop1, TriggerClientMenu )
-
Значит проблема в движке игры?
Каким боком тут RenderWare?
Извеняюсь,не игры,а в движке Blue...
Сама игра никакого чата не имеет
-
Значит проблема в движке игры? Ждем фикс...
-
Не буду долго обьяснять,но:
Русский чат стал каким то грузинским...странно...
-
А вот так не получится?
function guiClick() if source == ch_grdlist then outputChatBox("Вы кликнули по "..guiGridListGetSelectedItem(ch_grdlist)[1].." строчке") end end addEventHandler("onClientGUIClick",resourceRoot, guiClick)
незнаю,у меня не получалось,проверьте...
-
addEventHandler("onClientGUIClick",root, function() if source == твой грид then name = guiGridListGetItemText ( твой грид, guiGridListGetSelectedItem (твой грид), 1 ) if name == "имя твоего row" then ---- действие end end end
GUIEditor.gridlist[1] = guiCreateGridList(9, 21, 245, 196, false, GUIEditor.window[1]) guiGridListAddColumn(GUIEditor.gridlist[1], "Teams", 0.9) for i = 1, 2 do guiGridListAddRow(GUIEditor.gridlist[1]) end guiGridListSetItemText(GUIEditor.gridlist[1], 0, 1, "Army", false, false) guiGridListSetItemText(GUIEditor.gridlist[1], 1, 1, "Gang", false, false) showCursor ( true ) addEventHandler("onClientGUIClick",root, function() if source == GUIEditor.gridlist[1] then name = guiGridListGetItemText ( GUIEditor.gridlist[1] , guiGridListGetSelectedItem (GUIEditor.gridlist[1] ), 1 ) if name == "Army" then outputChatBox ("You spawned as Army") end end end
-
В данном куске кода все выглядит более-менее логично.
Добавляется новое событие, потом - его обработчик с функцией.
Цикла нет, следовательно, один раз генерируется рандомное число, а потом один раз, в зависимости от этого числа, выполняется соответствующая ему часть if'а.
Получается, что событие вызывается несколько раз? Ищите проблему в вызове события.
Дело в том,что событие вызывается 1 раз,но исполняются не 1 рандомное,а сразу все 6...как быть?
-
ipairs перебирает таблицы, а вы дали ему randomID, который есть число.
p.s. он печатает не все, а работает как раз-таки рандом. некотрые повторяются.
если подставить перебор именно таблицы: for k,settable in ipairs ( servertable ) do
то цикл пройдет шесть раз (собственно, столько в таблице у вас строк: он пройдет ВСЮ таблицу, один проход - одна строка, по очереди). то есть шесть раз (по одному разу за каждый проход) генерируется случайное число, и для него сразу после срабатывает соответствующий if (по одному разу за один проход - получается, что разные if'ы в сумме срабатывают тоже шесть раз). кстати, по-моему, вам следует задуматься об использовании elseif.
Спасибо,я учту.Но как мне быть,то???
Допустим,будет у меня elseif но что делать с
for k,settable in ipairs ( ) do
?
P.S. > Получился вот такой код,но теперь вызывается сразу все:
---===SERVER===--- servertable = { [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6 } addEvent( "donateallow",true) addEventHandler ("donateallow",root, function() local randomID = math.random ( 1, #servertable ) if randomID == 1 then giveWeapon ( source,31,math.random(10,150) ) outputChatBox ("You are won some guns",source) elseif randomID == 2 then outputChatBox ("You are not lucky ",source,255,0,0,false) elseif randomID == 3 then setPedSkin ( source ,math.random (1,210) ) outputChatBox ("You are won Skin!",source) elseif randomID == 4 then killPed ( source ) outputChatBox ("Oh...sorry guy ",source,0,255,0,false) elseif randomID == 5 then x,y,z = getElementPosition ( source ) createVehicle ( 411 , x + 3,y,z) outputChatBox ("Vehicle near you ;D",source) elseif randomID == 6 then setElementHealth ( source , 50 ) outputChatBox ("Nothing...only lower of your HP!",source,0,255,0,false) end end )
-
16 строка: bad argument #1 to ipairs (table expected,got number)
---===SERVER===--- servertable = { [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6 } function AllowRightKey () local randomID = math.random ( 1, #servertable ) for k,settable in ipairs ( randomID ) do if settable == 1 then giveWeapon ( source,31,math.random(10,150) ) outputChatBox ("You are won some guns",source) end if settable == 2 then outputChatBox ("You are not lucky ",source,255,0,0,false) end if settable == 3 then setPedSkin ( source ,math.random (1,210) ) outputChatBox ("You are won Skin!",source) end if settable == 4 then killPed ( source ) outputChatBox ("Oh...sorry guy ",source,0,255,0,false) end if settable == 5 then x,y,z = getElementPosition ( source ) createVehicle ( 411 , x + 3,y,z) outputChatBox ("Vehicle near you ;D",source) end if settable == 6 then setElementHealth ( source , 50 ) outputChatBox ("Nothing...only lower of your HP!",source,0,255,0,false) end end end addEvent( "donateallow",true) addEventHandler ("donateallow",getRootElement(),AllowRightKey)
-
Вы ничего не поняли.
Просто скажите, что вы хотите сделать.
У меня уже все получилось,я хотел сделать так,что бы,если человек вышел - сохранился его Уровень и Опыт.
Когда зашел - ему вернулся тот же Уровень и Опыт.
-
С чего вы решили что setElementData что-то должно сохранять?
Не понятно чего вы добиваетесь от OnPlayerQuit().
Вы чтоли специально записываете в глобальную область две переменные? А если другой игрок перезапишет их?
Я вобще не понимаю вашей логики, объясните хотя бы..
1.У меня мало фантазии.
2.Что он может переписать,если исполняется все на server? 0_0
3.Спасибо,мне ваш текст напомнил чуть о клиентской стороне.Когда я все перевел туда - все начало сохранятся,за это огромное спасибо.Код закомпилирован,уже никто ничего не перепишет.
-
Вообщем,есть вот такой код на server:
function OnPlayerQuit () savedata = getElementData ( source , "Level" ) saveexp = getElementData ( source, "EXP" ) end addEventHandler ("onPlayerQuit",getRootElement(),OnPlayerQuit ) function OnPlayerJoin () setElementData ( source , "Level",savedata ) setElementData ( source , "EXP",saveexp ) end addEventHandler ("onPlayerJoin",getRootElement(),OnPlayerJoin)
Ни то,ни то - не сохраняется,если человек заходит,в TAB не сохраняет его уровень...что же делать???
Заказ приватного скрипта
in Скриптинг
Posted
Я все кратко рассказал.Поверь,рп там есть.Ну а боты...исключение же можно сделать??