Jump to content

Дада (: фулдилка


Recommended Posts

Спросил у одного паренька со средним компом, как играется на 3019.

До этого фпс садился до 20, теперь стабильные 38-44 (при лимите 45).

отбой.

Только вот загвоздочка - у меня и как минимум у еще одного человека на 3019 "перекосило" killmessages, иконки стали более вытянутыми.

У меня такое было как-то раз, примерно два года назад, решилось простым обновлением всего (сервер, ресурсы).

Link to comment
  • Replies 2.4k
  • Created
  • Last Reply

Top Posters In This Topic

Я с самого начала хотел сделать как ты говоришь. Но если у одно ФПС 23 у другого 45? :)

Разное время получится. У одного секунды 4, у другого 8.

Для этого можно использовать событие onClientPreRender, в котором есть параметр, показывающий сколько прошло тиков после предыдущего кадра. Тут и фпс не нужно будет считать. Если отнимать каждый раз значение этого параметра от, например, 10000, то за 10 секунд число уменьшится до 0 у любого :wink:

onClientPlayerDamage. У игрока ХП не снимаются, event говорит что ты попал.

Событие onClientPlayerDamage срабатывает, когда у тебя на экране кто-то попал в кого-то, но оно не обязательно совпадает с серверным событием onPlayerDamage, поэтому по onClientPlayerDamage нельзя считать что попадание было на сервере, поэтому же и хп не отнимется.

Link to comment

Я пока что новичёк раньше кодерил в самп

почему это не работает

function test(attacker) 
outputChatBox( "Йа вызвался") 
local x,y,z = getElementPosition (attacker) 
setPedControlState ( source, "aim_weapon", true ) 
setPedAimTarget ( source, x, y, z) 
setPedControlState ( source, "fire", true ) 
end 

Персонаж стоит как и был но "луч" выстрела попадает в меня

как правильно установить SetElementRotation

Link to comment
Я пока что новичёк раньше кодерил в самп

почему это не работает

function test(attacker) 
outputChatBox( "Йа вызвался") 
local x,y,z = getElementPosition (attacker) 
setPedControlState ( source, "aim_weapon", true ) 
setPedAimTarget ( source, x, y, z) 
setPedControlState ( source, "fire", true ) 
end 

Персонаж стоит как и был но "луч" выстрела попадает в меня

как правильно установить SetElementRotation

  
function test(attacker) 
    outputChatBox( "Йа вызвался") 
    local x, y, z = getElementPosition(attacker)     
    local px, py, _ = getElementPosition(source) 
    local rot = (360 - math.deg(math.atan2((x - px), (y - py)))) % 360 
    setPedRotation(source, rot) 
    setPedControlState(source, "aim_weapon", true) 
    setPedAimTarget(source, x, y, z) 
    setPedControlState(source, "fire", true) 
end 
  

Link to comment

в мап файл пишу

  
for _, sp in ipairs(getElementsByType("spawn_point")) do 
outputChatBox("Spawn X: " .. getElementData(sp, "posX")) 
end 
  

--------------------

Гг.

Сделал так:

  
    local random_spawn = getElementByIndex("spawn_point", math.random(1, 3)) 
    setElementPosition(source, getElementData(random_spawn, "posX"), getElementData(random_spawn, "posY"), getElementData(random_spawn, "posZ")) 
  

Link to comment

Да, каждый .map файл в ресурсе имеет своего map root предка, поэтому можно выбрать рандомный элемент лишь из одной карты. А элементы созданные через скрипты принадлежат к dynamic root.

Link to comment

getResourceMapRootElement - Елемент карты по её имени

пetResourceDynamicElementRoot - Динамичный элемент (Сюда попадают все элементы созданные через скрипты)

Вообще, очень полезно правильно использовать древо элементов, можно очень сильно оптимизировать свои ресурсы. Например если вы работаете над каким-нибудь РПГ.

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

Но мой map файл был предельно прост:

<propertyRoot> 
  <houseRoot> 
    <property posX="..." posY="..." posZ="..." interior="CH02" world="10000" price="1000000" /> 
  </houseRoot> 
  <businessRoot> 
    <property posX="..." posY="..." posZ="..." interior="MC01" world="10000" price="1000000" /> 
  </businessRoot> 
</propertyRoot> 

Получается на каждое здание я передавал клиенту не 4 элемента, а всего 1, потом на стороне клиента в зависимости от того к какому предку пренадлежит строение (house или business), ставил маркеры, расшифровывал свой interior и ставил маркеры там в определенном мире. А для прорисовки цен и т.п. делал getElementsByType ( "marker", propertyRoot ) - и функция искала нужные мне маркеры не через всё древо элементов на сервере, а лишь там где хранятся мои здания.

В итоге: При заходе на сервер клиенту меньше качать, и мои дополнительные скрипты в каждом фрейме работают быстрее.

Link to comment

setElementData к примеру. Очень полезная вещь. Как я понял, подобная в samp'e PVar'ам, только можно туда писать что душе угодно, без указания типа и не только игрокам. Наоборот только, PVar'ы её копия. :)

Link to comment

Скажите пожалуйста, а можно сделать так, чтобы персонаж "прилипал" к транспортному средству только тогда, когда он "присел" [c]? И только к определённым видам транспорта. Зачем: для упрощённой и надёжной перевозки пассажиров на воде. Я это... ну... не шарю, так сказать.

Намекните, если сообразите как это сделать. Я поколдую...

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...