el_motoblock Posted February 3, 2012 Share Posted February 3, 2012 Ато nil пишет Серверный: function FSHUD() FSstatus = getPedFightingStyle ( thePlayer ) FSstatus = setPedFightingStyle ( thePlayer, 6 ) end addEventHandler ( "onPlayerJoin", getRootElement(), FSHUD ) Клиентский: function FSvisible () local sWidth,sHeight = guiGetScreenSize() local weaponID = getPedWeapon ( getLocalPlayer() ) local weaponSlot = getSlotFromWeapon ( weaponID ) if ( weaponSlot == 0 ) then dxDrawText(tostring (FSstatus), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(0,0,0,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) dxDrawText(tostring (FSstatus), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(255,255,255,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) end if ( weaponSlot == 0 ) then dxDrawText(tostring (FSstatus), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(0,0,0,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) dxDrawText(tostring (FSstatus), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(255,255,255,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) end if ( weaponSlot == 0 ) then dxDrawText(tostring (FSstatus), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(0,0,0,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) dxDrawText(tostring (FSstatus), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(255,255,255,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) end end addEventHandler ("onClientRender", root, FSvisible ) Link to comment
Kenix Posted February 3, 2012 Share Posted February 3, 2012 1.Твой код не верный: thePlayer = nil Тебе нужно юзать переменную source( источник события т.е игрок в данном случае ) 2.Лучше через element data function FSHUD( ) setPedFightingStyle ( source, 6 ) local FSstatus = getPedFightingStyle ( source ) setElementData( source,"style",FSstatus ) end addEventHandler ( "onPlayerJoin",root, FSHUD ) function FSvisible ( ) local sWidth,sHeight = guiGetScreenSize( ) local weaponID = getPedWeapon ( localPlayer ) local weaponSlot = getSlotFromWeapon ( weaponID ) if ( weaponSlot == 0 ) then dxDrawText( tostring ( getElementData( localPlayer,"style" ) ), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(0,0,0,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) dxDrawText( tostring ( getElementData( localPlayer,"style" ) ), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(255,255,255,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) end if ( weaponSlot == 0 ) then dxDrawText( tostring ( getElementData( localPlayer,"style" ) ), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(0,0,0,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) dxDrawText( tostring ( getElementData( localPlayer,"style" ) ), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(255,255,255,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) end if ( weaponSlot == 0 ) then dxDrawText( tostring ( getElementData( localPlayer,"style" ) ), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(0,0,0,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) dxDrawText( tostring ( getElementData( localPlayer,"style" ) ), (213.0/800)*sWidth, (509.0/600)*sHeight, (284.0/800)*sWidth, (528.0/600)*sHeight,tocolor(255,255,255,255), (1.0/800)*sWidth,"arial","right","center",false,false,false) end end addEventHandler ("onClientRender", root, FSvisible ) Обновил код Link to comment
el_motoblock Posted February 3, 2012 Author Share Posted February 3, 2012 Что-то этот скрипт не динамичный. Установил другой стиль боя(другим скриптом), а цифру ту-же кажет, хотя стиль боя сменился. Link to comment
Kenix Posted February 4, 2012 Share Posted February 4, 2012 Что-то этот скрипт не динамичный. Установил другой стиль боя(другим скриптом), а цифру ту-же кажет, хотя стиль боя сменился. Я думаю нужно понимать что ты пишешь в коде. Дата элемента 'style' делается для игрока когда он входит на сервер. function FSHUD( ) setPedFightingStyle ( source, 6 ) local FSstatus = getPedFightingStyle ( source ) setElementData( source,"style",FSstatus ) end addEventHandler ( "onPlayerJoin",root, FSHUD ) Дополнение к коду. Установил другой стиль боя(другим скриптом) Вызывай из другого ресурса функцию setPedFightingStyle. addEvent( "onPedFightingStyleChange",true ) _setPedFightingStyle = setPedFightingStyle function setPedFightingStyle ( source, numb ) if isElement( source ) and type( numb ) == 'number' then local t = { [4] = true,[5] = true,[6] = true,[7] = true,[15] = true,[16] = true } if t[ numb ] then triggerEvent( "onPedFightingStyleChange",source,getPedFightingStyle( source ),numb ) return _setPedFightingStyle( source,numb ) end end return false end addEventHandler( "onPedFightingStyleChange",root, function( old,new ) if getElementType( source ) == 'player' then setElementData( source,"style",new ) end end ) Полный код. addEvent( "onPedFightingStyleChange",true ) _setPedFightingStyle = setPedFightingStyle function setPedFightingStyle ( source, numb ) if isElement( source ) and type( numb ) == 'number' then local t = { [4] = true,[5] = true,[6] = true,[7] = true,[15] = true,[16] = true } if t[ numb ] then triggerEvent( "onPedFightingStyleChange",source,getPedFightingStyle( source ),numb ) return _setPedFightingStyle( source,numb ) end end return false end function FSHUD( ) setPedFightingStyle ( source, 6 ) end addEventHandler ( "onPlayerJoin",root, FSHUD ) addEventHandler( "onPedFightingStyleChange",root, function( old,new ) if getElementType( source ) == 'player' then setElementData( source,"style",new ) end end ) Что тут трудного? Link to comment
el_motoblock Posted February 4, 2012 Author Share Posted February 4, 2012 Я и вызывал c помощью этих - https://community.multitheftauto.com/index.php?p= ... ails&id=75 и https://community.multitheftauto.com/index.php?p= ... ls&id=3140 а я говорю к примеру юзаю ресурс Dynamic Fight(вторая ссылка) - скрипт меняет стиль боя, но на GUI это не показано. Вот сам ресурс http://narod.ru/disk/39612441001/cw_hud.zip.html Link to comment
Kenix Posted February 4, 2012 Share Posted February 4, 2012 Установил другой стиль боя(другим скриптом) Вызывай из другого ресурса функцию setPedFightingStyle. Через exports или call Код .. ресурса. addCommandHandler( "set_style", function( source,_,num ) exports['cw_hud']:setPedFightingStyle ( source, tonumber( num ) ) end ) И ещё в твоём ресурсе ( cw_hud ) должен быть экспорт функции ( setPedFightingStyle ) в мете. Я только-что проверил у меня всё работает .. Link to comment
el_motoblock Posted February 4, 2012 Author Share Posted February 4, 2012 мне сет не нужен, мне гет нужен. На видео игрок дерется различными ударами(стилями), а на HUD'е до сих пор тотже номер. есть ли возможность записать значение переменной из getPedFightingStyle и передать в переменную клиентского скрипта. Link to comment
Kenix Posted February 5, 2012 Share Posted February 5, 2012 Прочти внимательно мой предыдущий пост. Link to comment
el_motoblock Posted February 5, 2012 Author Share Posted February 5, 2012 И ещё в твоём ресурсе ( cw_hud ) должен быть экспорт функции ( setPedFightingStyle ) в мете.Я только-что проверил у меня всё работает .. так? <export function="setPedFightingStyle" type="server"/> Вообще стиль не отображает http://narod.ru/disk/39668692001/cw_hud.zip.html (еще и вантедлевел добавил до кучи ) Link to comment
Kenix Posted February 5, 2012 Share Posted February 5, 2012 Ты клиентские функции юзаешь на сервере и серверные на клиенте ... Прочти эту тему Link to comment
el_motoblock Posted February 5, 2012 Author Share Posted February 5, 2012 Ты клиентские функции юзаешь на сервере и серверные на клиенте ...Прочти эту тему Путаю бывает и статью эту читал. а толку. Вот смотри к примеру кусок из fstyle(в комьюнити есть): function getPlayerFightStyle ( thePlayer, commandName ) local playerstyle = getPlayerFightingStyle ( thePlayer ) -- store the fighting style in a variable outputChatBox ( tostring(playerstyle), thePlayer ) -- output it to the player end addCommandHandler ( "style", getPlayerFightStyle ) Этот скрипт при команде style берет номер и выводит в консоль. Так вот мне надо так чтобы эту цифру куда-нить записывало и чотбы ее можно было отобразить в клиенте. И чтобы обновлялся каждые 500 мс. Link to comment
Kenix Posted February 5, 2012 Share Posted February 5, 2012 Установил другой стиль боя(другим скриптом Вызывай из другого ресурса функцию setPedFightingStyle. Через exports или call Код .. ресурса. addCommandHandler( "set_style", function( source,_,num ) exports['cw_hud']:setPedFightingStyle ( source, tonumber( num ) ) end ) Ладно 3 раз ещё раз напишу. addCommandHandler( "set_style", function( source,_,num ) exports['cw_hud']:setPedFightingStyle ( source, tonumber( num ) ) end ) При вызове этой функции ( setPedFightingStyle) будет срабатывать событие , которое сделает игроку дату , которое ты ввёл в команде set_style . Ну и естественно в твоём худе будет виден стиль борьбы. Так что замени: function getPlayerFightStyle ( thePlayer, commandName ) local playerstyle = getPlayerFightingStyle ( thePlayer ) -- store the fighting style in a variable outputChatBox ( tostring(playerstyle), thePlayer ) -- output it to the player end addCommandHandler ( "style", getPlayerFightStyle ) На это: addCommandHandler( "set_style", function( source,_,num ) exports['cw_hud']:setPedFightingStyle ( source, tonumber( num ) ) end ) Путаю бывает и статью эту читал. а толку. В том то и дело , что статью ты не читал. Link to comment
MX_Master Posted February 5, 2012 Share Posted February 5, 2012 сервер setTimer( function() local tPlayers = getElementsByType('player') for _, uPlayer in ipairs(tPlayers) do setElementData( uPlayer, 'fightingStyle', getPedFightingStyle(uPlayer), true ) end end, 500, 0 ) клиент function FSvisible () local FSstatus = getElementData( localPlayer, 'fightingStyle' ) or 4 -- ... Link to comment
el_motoblock Posted February 6, 2012 Author Share Posted February 6, 2012 Cпасибо за помощь MX Master и Kenix помогло. Спасибо что не кинули мою проблему Доделаю кое что и в комьюнити выложу мне не жалко не в одну же харю делал Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now