Maikele

Members
  • Content count

    14
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Maikele

  • Rank
    Square

Details

  • Gang
    The Ballas
  • Location
    Kazan, Tatarstan
  • Occupation
    Number one programmer around the world ( no )
  • Interests
    more..
  1. кхм, что за бред, код не весь выкладывается ...
  2. Имеется логин панель и создание персонажа, проблема в том что не хочет переименовывать ник уже ранее зарегистрированного пользователя. К примеру: Игрок зашел на сервер > зарегистрировался, создал персонажа ввел имя фамилия > затем его переименовывает "Имя_Фамилия", но если игрок переподключится на сервер, то его не переименовывает. В чем проблема? хеелп Вот код: addEventHandler( "onPlayerLogin", getRootElement(), function () local name = getElementData ( source, "p_name" ); --# Имя local surname = getElementData ( source, "p_surname" ); --# Фамилия setPlayerName ( source, name.."_"..surname ); end ) addCommandHandler ( "changeNamePlayer", function ( thePlayer, cmd, id, name, surname ) if not id then return end if not name then return end if not surname then return end local accName = getAccountName ( getPlayerAccount ( thePlayer ) ); if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then local allPlayers = getElementsByType ( "player" ); for i, v in ipairs( allPlayers ) do if ( getElementData ( v, "playerid" ) == tonumber ( id ) ) then setElementData ( v, "p_name", name ); setElementData ( v, "p_surname", surname ); setPlayerName ( v, name.."_"..surname ); outputChatBox ( "#e6e6e6Ваше имя изменено администратором #ffd633"..getPlayerName(thePlayer), v, 255, 255, 255, true ); else if ( i == #allPlayers ) then outputChatBox ( "#ff8800[Инфо] #ff0000Игрока с ID: "..id.." не найдено", thePlayer, 255, 255, 255, true ); end end end end end ) addEventHandler("onPlayerChangeNick", getRootElement(), function () cancelEvent( ); end )
  3. Что то у всех домов меняются пикапы на голубой когда куплю heeeeeeeeeeeeeeeeelp hPickup = createPickup(eX, eY, eZ, 3, 1273, 100) --#Зеленый пикап ( дом свободен ) setElementData ( hPickup, "hsPickup", { etX, etY, etZ, int, dim, cost, owner, key, ID } ) addEvent( 'HOUSE_Buy', true ); addEventHandler( 'HOUSE_Buy', root, function( cost, key ) local accName = getAccountName( getPlayerAccount( client ) ); local houseCounter = 0; for i, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do if getElementData( v, 'HS_INFO' ) then local owner = getElementData( v, 'HS_INFO' )[7]; if owner == accName then houseCounter = houseCounter + 1; end; end; end; if houseCounter >= tonumber( get( 'playerHouseCounter' ) ) then outputChatBox( '* You can not buy more than #00FF00'..get( 'playerHouseCounter' )..' house(-s)#FF3324 at the same time!', client, 255, 51, 36, true ); setPedFrozen( client, false ); return false; end; if getPlayerMoney( client ) >= tonumber( cost ) then outputChatBox( '* Key has been set to #00FF00'..key, client, 255, 51, 36, true ); outputChatBox( '* Congratulations! You have bought a house!', client, 255, 255, 0 ); sql.Query( "UPDATE house_data SET owner = '"..accName.."', key = '"..key.."' WHERE ID = ?", getElementData( client, 'mrk_in' ) ); takePlayerMoney( client, cost ); local mrk = getHouseByID( getElementData( client, 'mrk_in' ) ); local t = {}; for i = 1, 6 do t[i] = getElementData( mrk, 'HS_INFO' )[i]; end; t[7] = accName; t[8] = key; t[9] = getElementData( client, 'mrk_in' ); setElementData( mrk, 'HS_INFO', { t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9] } ); setMarkerColor( mrk, 255, 51, 36, 150 ); --#Голубой пикап ( дом занят ) for i, v in ipairs( getElementsByType( 'pickup' ) ) do if getElementData( v, 'hsPickup' ) then setPickupType ( v, 3, 1272 ) end; end; setTimer( onPlayerHouseMarkerHit, 50, 1, client, mrk, true ); else outputChatBox( '* You do not have enough money!', client, 255, 51, 36 ); onPlayerHouseMarkerHit( client, getHouseByID( getElementData( client, 'mrk_in' ) ), true ); end; end );
  4. Хорошо, а вот если мне удалить этот пикап нужно?
  5. Применил setElementModel, и пикап не хочет изменяется. Должен функционировать так: Купил дом > пикап поменялся. Что тут не так сделал? local hPickup if owner == '' then hPickup = createPickup(eX, eY, eZ, 3, 1273, 100) else hPickup = createPickup(eX, eY, eZ, 3, 1272, 100) end addEvent( 'HOUSE_Buy', true ); addEventHandler( 'HOUSE_Buy', root, function( cost, key ) local accName = getAccountName( getPlayerAccount( client ) ); local houseCounter = 0; for i, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do if getElementData( v, 'housech' ) then local owner = getElementData( v, 'housech' )[7]; if owner == accName then houseCounter = houseCounter + 1; end; end; end; if houseCounter >= tonumber( get( 'playerHouseCounter' ) ) then setPedFrozen( client, false ); return false; end; if getPlayerMoney( client ) >= tonumber( cost ) then sql.Query( "UPDATE house_data SET owner = '"..accName.."', key = '"..key.."' WHERE ID = ?", getElementData( client, 'mrk_in' ) ); takePlayerMoney( client, cost ); local mrk = getHouseByID( getElementData( client, 'mrk_in' ) ); local t = {}; for i = 1, 6 do t[i] = getElementData( mrk, 'housech' )[i]; end; t[7] = accName; t[8] = key; t[9] = getElementData( client, 'mrk_in' ); setElementData( mrk, 'housech', { t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9] } ); setElementModel ( hPickup, 1272 ) --#Pickup // дом занят; setTimer( onPlayerHouseMarkerHit, 50, 1, client, mrk, true ); else outputChatBox( '* У вас нехватает денег', client, 255, 51, 36 ); onPlayerHouseMarkerHit( client, getHouseByID( getElementData( client, 'mrk_in' ) ), true ); end; end );
  6. removeEventHandler

    Проблема решена.
  7. removeEventHandler

    Кстати, возможно понял в чем проблема ( хотя не уверен ), но когда убираю с позиции кнопку, то работает........
  8. removeEventHandler

    1. Не-а, думаю не в этом дело, т.к. у меня есть функция > кнопка "закрыть", т.е. нажимаешь и все закрывается. hm_gui['btn_close'] = guiCreateButton( xn+350, xv + hv - 260, 25, 20, 'X', false ); guiSetAlpha(hm_gui['btn_close'], 0) guiSetVisible ( hm_gui['btn_close'], false ) addEventHandler( 'onClientGUIClick', hm_gui['btn_close'], function( btn ) if btn ~= 'left' then return false; end; triggerServerEvent( 'setFrozen', me, false ); removeEventHandler("onClientPreRender", getRootElement(), mainWindow) --#Кнопки guiSetVisible ( hm_gui['icon_buy'], false ) --#Текст guiSetVisible ( hm_gui['label_price'], false ) showCursor( false ); end, false ); А именно закрыть при нажатие на "купить", не закрывается.. 2. onClientGUIClick запускается)
  9. removeEventHandler

    Название разные, потому что у меня 2 окна. Открываешь одно окно, при нажатие на кнопку открывается другое, вот я и сделал так. addEventHandler( 'onClientGUIClick', root, function( btn ) if btn ~= 'left' then return false; end; if source == hm_gui['icon_buy'] then guiSetVisible( hm_gui['wnd_key_onBuy'], true ); guiSetText( hm_gui['onBuy_edit'], 'Ключ' ); guiSetInputEnabled( true ); removeEventHandler("onClientPreRender", getRootElement(), mainWindow) addEventHandler("onClientPreRender", getRootElement(), houseBuyWindow) elseif source == hm_gui['icon_sale'] then guiSetVisible( hm_gui['wnd_key_onSale'], true ); guiSetText( hm_gui['onSale_edit'], 'Key' ); guiSetInputEnabled( true ); removeEventHandler("onClientPreRender", getRootElement(), mainWindow) addEventHandler("onClientPreRender", getRootElement(), houseSaleWindow) elseif source == hm_gui['icon_key'] then guiSetVisible( hm_gui['wnd_key_onChange'], true ); guiSetText( hm_gui['onChange_edit_Old'], 'Old key' ); guiSetText( hm_gui['onChange_edit_New'], 'New key' ); guiSetText( hm_gui['onChange_edit_RepeatNew'], 'Repeat new key' ); guiSetInputEnabled( true ); removeEventHandler("onClientPreRender", getRootElement(), mainWindow) addEventHandler("onClientPreRender", getRootElement(), houseKeyWindow) elseif source == hm_gui['icon_newowner'] then guiSetVisible( hm_gui['wnd_key_onNewOwner'], true ); guiSetText( hm_gui['onNewOwner_keyEdit'], 'Key' ); guiSetText( hm_gui['onNewOwner_nameEdit'], 'Account Name' ); guiSetInputEnabled( true ); removeEventHandler("onClientPreRender", getRootElement(), mainWindow) addEventHandler("onClientPreRender", getRootElement(), houseNewOwnerWindow) elseif source == hm_gui['icon_destroy'] then guiSetVisible( hm_gui['wnd_onDestroy'], true ); removeEventHandler("onClientPreRender", getRootElement(), mainWindow) end end ) Вот весь код. Если нажимаешь кнопку в основном окне, то основное окно должно скрываться, а новое открываться и т.д. UPD: Не два окна, их несколько
  10. removeEventHandler

    После нажатие на кнопку, не хочет удаляться функция обработчика из события, что не так сделал? ( onClientRender пробовал ) function mainDx () dxDrawImage(xn, xv, wn, hv, "images/bground.png", 0, 0, 0, tocolor(255, 255, 255, 210), false)--#Фон dxDrawText("Войти", xn + 106, xv + hv - 84, 120, 27, tocolor(255, 255, 255, 225), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Купить", xn + 238, xv + hv - 84, 120, 27, tocolor(255, 255, 255, 225), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Сменить ключ", xn + 148, xv + hv - 47, 120, 27, tocolor(255, 255, 255, 225), 1.00, "default-bold", "left", "top", false, false, false, false, false) end buyButton = guiCreateButton( xn + 64, xv + hv - 90, 120, 27, 'Купить', false ) guiSetAlpha(buyButton, 0) guiSetVisible (buyButton, false ) addEventHandler( 'onClientGUIClick', root, function( btn ) if btn ~= 'left' then return false; end; if source == buyButton then --#Если нажать на кнопку "купить", то removeEventHandler("onClientPreRender", getRootElement(), mainDx); --#Удаляет основное окно guiSetVisible ( buyButton, false ) --#Удаляет кнопку addEventHandler("onClientPreRender", getRootElement(), HouseWindowDx); --#Открывается новое окно end end
  11. Киньте наброски пожалуйста, как прикрепить текст к пикапу. Вообщем у меня имеется интерфейс и кнопка "создать", при нажатие создается пикап на определенном месте. Пикап создается, вот с 3д текстом проблема. Пытался передать клиенту через событие и ничего, бывало что появлялся текст на 0000000.1 миллисекунд .server function createHouse ( house ) if ( house and type ( house ) == "table" ) then local houseName = house [ "houseName" ] local houseName = houseName:gsub ( "%p", "" ) local houseData = { name = houseName, owner = house [ "houseOwner" ], originalPrice = house [ "houseOriginalPrice" ], price = house [ "housePrice" ], forSale = house [ "houseForSale" ], position = fromJSON ( house [ "housePosition" ] ), dimension = tonumber ( house [ "id" ] ), interior = tonumber ( house [ "houseInterior" ] ), interiorState = house [ "houseInteriorState" ], music = house [ "streamURL" ] } local dimension = tonumber ( house [ "id" ] ) local pickupModel = ( houseData [ "forSale" ] == "Yes" and 1273 or 1272 ) local x, y, z = unpack ( houseData [ "position" ] or { 0, 0, 0 } ) local housePickup = createPickup ( x, y, z, 3, pickupModel, 0 ) local houseColshape = createColTube ( x, y, z - 1, 0.9, 2 ) setElementData ( houseColshape, "houseName", houseName, false ) addEventHandler ( "onColShapeHit", houseColshape, onHouseColshapeHit ) addEventHandler ( "onColShapeLeave", houseColshape, onHouseColshapeLeave ) housesCreated [ houseName ] = { position = house [ "position" ], pickup = housePickup, colshape = houseColshape, data = houseData, playersInside = { } } houseIDS [ tonumber ( house [ "id" ] ) ] = houseName return housesCreated [ houseName ] end return false end .client ( чет намудрил тут ) function nameText() if isElement(pickup) then local cx,cy,cz = getCameraMatrix() local px,py,pz = getElementPosition(pickup) local distance = getDistanceBetweenPoints3D(cx,cy,cz,px,py,pz) local posx,posy = getScreenFromWorldPosition(px,py,pz+0.025*distance+0.40) if posx and distance <= 15 then dxDrawBorderedText("Текст",posx-(0.5),posy-(20),posx-(0.5),posy-(20),tocolor(255,175,0,255),1,1,"default-bold","center","top",false,false,false) end end end addEventHandler("onClientHUDRender",root,nameText) function dxDrawBorderedText(text,left,top,right,bottom,color,scale,outlinesize,font,alignX,alignY,clip,wordBreak,postGUI,colorCoded) local outlinesize = math.min(scale,outlinesize) if outlinesize > 0 then for offsetX=-outlinesize,outlinesize,outlinesize do for offsetY=-outlinesize,outlinesize,outlinesize do if not (offsetX == 0 and offsetY == 0) then dxDrawText(text:gsub("#%x%x%x%x%x%x",""), left+offsetX, top+offsetY, right+offsetX, bottom+offsetY, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) end end end end dxDrawText(text, left, top, right, bottom, color, scale, font, alignX, alignY, clip, wordBreak, postGUI, colorCoded) end
  12. Добрый вечер! В МТА около месяца, ранее работал с павно, луа для меня новый язык, хочу обратиться за помощью. Ниже код, он реализован: Если игрок выйдет из транспорта, то у него есть 15 секунд чтобы вернуться иначе автомобиль исчезнет. Проблема в том, что автомобиль исчезает, даже когда игрок вернулся обратно. Помогите, может какие функции добавить, для этого..буду признателен. p.s. Извините за плохой русский. function taxiExitVeh( thePlayer ) if ( getElementModel ( source ) == 420 ) then outputChatBox("Вернитесь в автомобиль.", thePlayer, 255, 255, 255, true) setTimer ( destroyElement, 15000, 1, source, taxiVehs) end end addEventHandler ( "onVehicleExit", getRootElement(), taxiExitVeh )