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..

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  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. Проблема решена.
  7. Кстати, возможно понял в чем проблема ( хотя не уверен ), но когда убираю с позиции кнопку, то работает........
  8. 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. Название разные, потому что у меня 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. После нажатие на кнопку, не хочет удаляться функция обработчика из события, что не так сделал? ( 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 )