Hallo,
Ich habe mir das House_system installiert und schon eine menge Häuser erstellt.
Mir ist aber aufgefallen das man beim Serverjoin nicht im Haus spawnt und das man unendlich viele Häuser besitzen kann.
Da ist sehr viel Code aber ich möchte gerne das man nur 2 Häuser besitzen kann und man einstellen kann ob man beim Serverlogin im Haus spawnt.
Das ganze habe ich in Godmother getestet ich habe aber kein Plan wie ich es machen könnte weil ich nicht mal das Element finde das ich benutzen muss statt die Koordinate.
Ich poste mal alle Lua Datein:
core_server:
local sql = { Query = executeSQLQuery };
addEventHandler( 'onResourceStart', resourceRoot, function()
sql.Query( "CREATE TABLE IF NOT EXISTS house_data (\
ID INTEGER, en_X REAL, en_Y REAL, en_Z REAL,\
en_tX REAL, en_tY REAL, en_tZ REAL,\
ex_X REAL, ex_Y REAL, ex_Z REAL,\
ex_tX REAL, ex_tY REAL, ex_tZ REAL,\
int INTEGER, dim INTEGER, cost INTEGER, owner TEXT, key TEXT )"
);
for i, v in ipairs( getElementsByType( 'player' ) ) do
setElementData( v, 'k_len', tonumber( get( 'keyLength' ) ) );
local acc = getPlayerAccount( v );
if not isGuestAccount( acc ) then
setElementData( v, 'HS_accountName', getAccountName( acc ) );
end;
setElementData( v, 'mrk_in', nil );
end;
local hr = sql.Query( "SELECT * FROM house_data" );
for i = 1, #hr do
createHouse( false, hr[i].ID, hr[i].owner, hr[i].key, hr[i].en_X, hr[i].en_Y, hr[i].en_Z, hr[i].en_tX, hr[i].en_tY, hr[i].en_tZ, hr[i].ex_X, hr[i].ex_Y, hr[i].ex_Z, hr[i].ex_tX, hr[i].ex_tY, hr[i].ex_tZ, hr[i].int, hr[i].dim, hr[i].cost );
end;
end );
addEventHandler( 'onResourceStop', resourceRoot, function()
for i, v in ipairs( getElementsByType( 'player' ) ) do
setElementData( v, 'k_len', nil );
setElementData( v, 'HS_accountName', nil );
end;
end );
addEventHandler( 'onPlayerJoin', root, function()
setElementData( source, 'k_len', tonumber( get( 'keyLength' ) ) );
end );
addEventHandler( 'onPlayerLogin', root, function( _, acc )
setElementData( source, 'HS_accountName', getAccountName( acc ) );
end );
addEventHandler( 'onPlayerLoout', root, function( _, acc )
setElementData( source, 'HS_accountName', nil );
end );
addCommandHandler( 'create', function( player )
if isObjectInACLGroup( 'user.'..getAccountName( getPlayerAccount( player ) ), aclGetGroup( 'Admin' ) ) or hasObjectPermissionTo( player, 'function.banPlayer', false ) then
if not getElementData( player, 'HP_Opened' ) and not getElementData( player, 'mrk_in' ) then
triggerClientEvent( player, 'HP_SetVisible', root, true );
end;
else
outputChatBox( '* Access denied for this command!', player, 255, 36, 51 );
end;
end );
addEvent( 'onPlayerAttemptCreateHouse', true );
addEventHandler( 'onPlayerAttemptCreateHouse', root, function( rt )
createHouse( true, #sql.Query( "SELECT * FROM house_data" ) + 1, '', '', unpack( rt ) );
outputChatBox( '* The new house has been created successfully!', client, 255, 255, 0 );
end );
function createHouse( add, ID, owner, key, eX, eY, eZ, etX, etY, etZ, exX, exY, exZ, extX, extY, extZ, int, dim, cost )
if add then
sql.Query( "INSERT INTO house_data ( ID, en_X, en_Y, en_Z, en_tX, en_tY, en_tZ, ex_X, ex_Y, ex_Z, ex_tX, ex_tY, ex_tZ, int, dim, cost, owner, key ) VALUES ( "..ID..", "..eX..", "..eY..", "..eZ..", "..etX..", "..etY..", "..etZ..", "..exX..", "..exY..", "..exZ..", "..extX..", "..extY..", "..extZ..", "..int..", "..dim..", "..cost..", '', '' )" );
end;
local m_Enter = createMarker( eX, eY, eZ - 1, 'cylinder', 1.25, 0, 153, 255, 150 );
setElementData( m_Enter, 'HS_INFO', { etX, etY, etZ, int, dim, cost, owner, key, ID } );
if getElementData( m_Enter, 'HS_INFO' )[7] ~= '' then
setMarkerColor( m_Enter, 255, 51, 36, 150 );
end;
addEventHandler( 'onMarkerHit', m_Enter, function( player )
if getElementType( player ) == 'player' and not getPedOccupiedVehicle( player ) then
if not getElementData( player, 'HP_Opened' ) then
if not isGuestAccount( getPlayerAccount( player ) ) then
setElementData( player, 'mrk_in', getElementData( source, 'HS_INFO' )[9] );
onPlayerHouseMarkerHit( player, source, true );
setPedFrozen( player, true );
else
outputChatBox( '* You must be logged in to get in this house!', player, 255, 51, 36 );
end;
end;
end;
end );
addEventHandler( 'onMarkerLeave', m_Enter, function( player )
if getElementType( player ) == 'player' and not getPedOccupiedVehicle( player ) then
setElementData( player, 'mrk_in', nil );
end;
end );
local m_Exit = createMarker( exX, exY, exZ - 1, 'cylinder', 1.25, 0, 153, 255, 150 );
setElementData( m_Exit, 'parent', m_Enter );
setElementInterior( m_Exit, int );
setElementDimension( m_Exit, dim );
setElementData( m_Exit, 'extX', extX );
setElementData( m_Exit, 'extY', extY );
setElementData( m_Exit, 'extZ', extZ );
addEventHandler( 'onMarkerHit', m_Exit, function( player, dim )
if getElementType( player ) == 'player' and dim then
toggleAllControls( player, false );
fadeCamera( player, false );
setTimer( function( player, mrk )
if getPedOccupiedVehicle( player ) then removePedFromVehicle( player ); end;
local x, y, z = getElementData( mrk, 'extX' ), getElementData( mrk, 'extY' ), getElementData( mrk, 'extZ' );
setElementPosition( player, x, y, z );
setElementInterior( player, 0 );
setElementDimension( player, 0 );
toggleAllControls( player, true );
fadeCamera( player, true );
end, 1200, 1, player, source );
end;
end );
end;
function onPlayerHouseMarkerHit( player, mrk, cursor )
local acc = getPlayerAccount( player );
if isGuestAccount( acc ) then
outputChatBox( '* You must be logged in to get in this house!', player, 255, 51, 36 );
setElementData( player, 'mrk_in', nil );
setPedFrozen( player, false );
return false;
end;
local tts = { [1] = true, [2] = false, [3] = false, [4] = true, [5] = false, [6] = false };
if isObjectInACLGroup( 'user.'..getAccountName( acc ), aclGetGroup( 'Admin' ) ) or hasObjectPermissionTo( player, 'function.banPlayer', false ) then
tts[6] = true;
end;
local owner = getElementData( mrk, 'HS_INFO' )[7];
local accName = getAccountName( acc );
if owner == accName then
tts[1] = false;
tts[2] = true;
tts[3] = true;
tts[4] = true;
tts[5] = true;
end;
if owner ~= accName and owner ~= '' then
tts[1] = false;
end;
if owner == '' then
if isObjectInACLGroup( 'user.'..getAccountName( acc ), aclGetGroup( 'Admin' ) ) or hasObjectPermissionTo( player, 'function.banPlayer', false ) then
tts[4] = true;
else
tts[4] = false;
end;
end;
tts[7] = getElementData( mrk, 'HS_INFO' )[9];
tts[8] = getElementData( mrk, 'HS_INFO' )[7];
tts[9] = getElementData( mrk, 'HS_INFO' )[6];
triggerClientEvent( player, 'openHouseManagementWnd', root, tts, cursor );
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, '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 );
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 );
addEvent( 'HOUSE_Sell', true );
addEventHandler( 'HOUSE_Sell', root, function()
sql.Query( "UPDATE house_data SET owner = '', key = '' WHERE ID = ?", getElementData( client, 'mrk_in' ) );
local mrk = getHouseByID( getElementData( client, 'mrk_in' ) );
givePlayerMoney( client, getElementData( mrk, 'HS_INFO' )[6] / 2 );
local t = {};
for i = 1, 6 do
t[i] = getElementData( mrk, 'HS_INFO' )[i];
end;
t[7] = '';
t[8] = '';
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, 0, 153, 255, 150 );
setTimer( onPlayerHouseMarkerHit, 50, 1, client, mrk, false );
end
);
addEvent( 'HOUSE_Enter', true );
addEventHandler( 'HOUSE_Enter', root, function()
setPedFrozen( client, false );
local mrk = getHouseByID( getElementData( client, 'mrk_in' ) );
local t = {};
for i = 1, 5 do
t[i] = getElementData( mrk, 'HS_INFO' )[i];
end;
fadeCamera( client, false );
toggleAllControls( client, false );
setTimer( function( player, t )
if getPedOccupiedVehicle( player ) then removePedFromVehicle( player ); end;
setElementInterior( player, t[4], t[1], t[2], t[3] );
setElementDimension( player, t[5] );
toggleAllControls( player, true );
fadeCamera( player, true );
setElementData( player, 'mrk_in', nil )
end, 1200, 1, client, t );
end );
addEvent( 'HOUSE_ChangeKey', true );
addEventHandler( 'HOUSE_ChangeKey', root, function( newKey )
local mrk = getHouseByID( getElementData( client, 'mrk_in' ) );
sql.Query( "UPDATE house_data SET key = '"..newKey.."' WHERE ID = ?", getElementData( client, 'mrk_in' ) );
local t = {};
for i = 1, 6 do
t[i] = getElementData( mrk, 'HS_INFO' )[i];
end;
t[7] = getAccountName( getPlayerAccount( client ) );
t[8] = newKey;
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] } );
end );
addEvent( 'HOUSE_ChangeOwner', true );
addEventHandler( 'HOUSE_ChangeOwner', root, function( name )
local mrk = getHouseByID( getElementData( client, 'mrk_in' ) );
local accName = getAccountName( getPlayerAccount( getPlayerFromName( name ) ) );
sql.Query( "UPDATE house_data SET owner = '"..accName.."' WHERE ID = ?", getElementData( client, 'mrk_in' ) );
local res = sql.Query( "SELECT key, owner FROM house_data WHERE ID = ?", getElementData( client, 'mrk_in' ) );
local t = {};
for i = 1, 6 do
t[i] = getElementData( mrk, 'HS_INFO' )[i];
end;
t[7] = res[1].owner;
t[8] = res[1].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] } );
setTimer( onPlayerHouseMarkerHit, 50, 1, client, mrk, false );
outputChatBox( '* #FFFF00'..getPlayerName( client )..'#00FF00 has given you his house!', getPlayerFromName( name ), 0, 255, 0, true );
end );
addEvent( 'HOUSE_Destroy', true );
addEventHandler( 'HOUSE_Destroy', root, function()
local mrk = getHouseByID( getElementData( client, 'mrk_in' ) );
for ii, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do
if getElementData( v, 'parent' ) == mrk then
destroyElement( v );
end;
end;
local hr = sql.Query( "SELECT * FROM house_data" );
for i = getElementData( source, 'mrk_in' ), #hr do
if getHouseByID( i ) ~= mrk then
sql.Query( "UPDATE house_data SET ID = "..( i - 1 ).." WHERE ID = ?", i );
local res = sql.Query( "SELECT owner, key FROM house_data WHERE ID = ?", i - 1 );
local nextMrk = getHouseByID( i );
local t = {};
for i = 1, 6 do
t[i] = getElementData( nextMrk, 'HS_INFO' )[i];
end;
t[7] = res[1].owner;
t[8] = res[1].key;
t[9] = i - 1;
setElementData( nextMrk, 'HS_INFO', { t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9] } );
local player = getPlayerByHouseID( i - 1 );
setElementData( player, 'mrk_in', i - 1 );
else
sql.Query( "DELETE FROM house_data WHERE ID = ?", i );
destroyElement( mrk );
end;
end;
outputChatBox( '* House #'..getElementData( source, 'mrk_in' )..' has been destroyed!', source, 255, 255, 0 );
setPedFrozen( source, false );
setElementData( source, 'mrk_in', nil );
end );
function getHouseByID( id )
for i, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do
if getElementData( v, 'HS_INFO' ) and getElementData( v, 'HS_INFO' )[9] == id then
return v;
end;
end;
return false;
end;
function getPlayerByHouseID( id )
for i, v in ipairs( getElementsByType( 'player' ) ) do
if getElementData( v, 'mrk_in' ) == id then
return v;
end;
end;
return false;
end;
addEvent( 'setFrozen', true );
addEventHandler( 'setFrozen', root, function( state )
setPedFrozen( client, state );
end );
addEventHandler( 'onPlayerWasted', root, function()
if getElementData( source, 'mrk_in' ) then
setElementData( source, 'mrk_in', nil );
setPedFrozen( source, false );
end;
end );
Alles anzeigen
interriors:
local ints = {
{ 223.043991, 1289.259888, 1082.199951, 1 },
{ 295.138977, 1474.469971, 1080.519897, 15 },
{ 328.493988, 1480.589966, 1084.449951, 15 },
{ 2262.83000, -1137.71000, 1050.630000, 10 },
{ 2251.85000, -1138.16000, 1050.630000, 9 },
{ 225.756989, 1240.000000, 1082.149902, 2 },
{ 2451.77000, -1699.80000, 1013.510000, 2 },
{ 385.803986, 1471.769897, 1080.209961, 15 },
{ 2260.76000, -1210.45000, 1049.020000, 10 },
{ 235.508994, 1189.169897, 1080.339966, 3 },
{ 225.630997, 1022.479980, 1084.069946, 7 },
{ 2807.63000, -1170.15000, 1025.570000, 8 },
{ -2158.7200, 641.2900000, 1052.380000, 1 },
{ 244.089200, 304.8456000, 999.1484000, 1 },
{ 2525.04200, -1679.1150, 1015.4990000, 1 },
{ 2216.54000, -1076.2900, 1050.4840000, 1 },
{ 0.34400000, -0.5140000, 1000.5490000, 2 },
{ 1523.75100, -46.045800, 1002.1310000, 2 },
{ 2543.66100, -1303.9320, 1025.0700000, 2 },
{ 267.229000, 304.710000, 999.14800000, 2 },
{ 1527.38000, -11.020000, 1002.1000000, 3 },
{ 516.889000, -18.412000, 1001.5650000, 3 },
{ 302.640400, 304.804800, 999.14840000, 4 },
{ 1272.91160, -768.90280, 1090.5097000, 5 },
{ 2807.89900, -1172.9210, 1025.5700000, 8 },
{ 2253.17400, -1139.0100, 1050.6330000, 9 },
{ 2264.52310, -1210.5229, 1049.0234000, 10 },
{ 2324.49900, -1147.0710, 1050.7100000, 12 },
{ 322.720000, 306.430000, 999.15000000, 5 },
{ 2333.03300, -1073.9600, 1049.0230000, 6 },
{ 2194.29100, -1204.0150, 1049.0230000, 6 },
{ 2308.87100, -1210.7170, 1049.0230000, 6 }
};
addCommandHandler( 'sint', function( player, command, r )
if isObjectInACLGroup( 'user.'..getAccountName( getPlayerAccount( player ) ), aclGetGroup( 'Admin' ) ) or hasObjectPermissionTo( player, 'function.banPlayer', false ) then
if getElementData( player, 'HP_Opened' ) then
r = tonumber( r );
if r and r > 0 and r <= #ints then
local p_int = getElementInterior( player );
if ints[ r ][ 4 ] == p_int then
setElementPosition( player, ints[ r ][ 1 ], ints[ r ][ 2 ], ints[ r ][ 3 ] );
else
setElementInterior( player, ints[ r ][ 4 ], ints[ r ][ 1 ], ints[ r ][ 2 ], ints[ r ][ 3 ] );
end;
else
outputChatBox( '* Incorrent interior ID!', player, 255, 51, 36 );
end;
else
outputChatBox( '* Access denied for this command: House Construction panel must be open!', player, 255, 51, 36 );
end;
else
outputChatBox( '* Access denied for this command!', player, 255, 51, 36 );
end;
end );
Alles anzeigen
core_client:
local me = getLocalPlayer();
local scX, scY = guiGetScreenSize();
local hc_gui = {}; --house construction
local hc_edit = {}; --edit fields
local hm_gui = {}; --management
addEventHandler( 'onClientResourceStart', resourceRoot, function()
hc_gui['main'] = guiCreateWindow( scX-310, scY/2-450/2, 300, 450, 'Haus Bauen GUI', false );
guiSetAlpha( hc_gui['main'], 1.0 );
--Entrance--
hc_gui['label_ec'] = guiCreateLabel( 0.042, 0.05, 0.4, 0.1, 'Eingang', true, hc_gui['main'] );
guiLabelSetHorizontalAlign( hc_gui['label_ec'], 'center', true );
hc_edit['edit_ec_X'] = guiCreateEdit( 0.063, 0.15, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_ec_Y'] = guiCreateEdit( 0.063, 0.22, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_ec_Z'] = guiCreateEdit( 0.063, 0.29, 0.39, 0.06, '', true, hc_gui['main'] );
hc_gui['btn_ecPick'] = guiCreateButton( 0.063, 0.36, 0.39, 0.06, 'Koordinaten', true, hc_gui['main'] ); --1
--Entrance teleport--
hc_gui['label_etc'] = guiCreateLabel( 0.009, 0.45, 0.5, 0.1, 'Eingang im Haus', true, hc_gui['main'] );
guiLabelSetHorizontalAlign( hc_gui['label_etc'], 'center', true );
hc_edit['edit_etc_X'] = guiCreateEdit( 0.063, 0.55, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_etc_Y'] = guiCreateEdit( 0.063, 0.62, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_etc_Z'] = guiCreateEdit( 0.063, 0.69, 0.39, 0.06, '', true, hc_gui['main'] );
hc_gui['btn_etcPick'] = guiCreateButton( 0.063, 0.76, 0.39, 0.06, 'Koordinaten', true, hc_gui['main'] ); --2
--Exit--
hc_gui['label_exc'] = guiCreateLabel( 0.55, 0.05, 0.4, 0.1, 'Ausgang', true, hc_gui['main'] );
guiLabelSetHorizontalAlign( hc_gui['label_exc'], 'center', true );
hc_edit['edit_exc_X'] = guiCreateEdit( 0.55, 0.15, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_exc_Y'] = guiCreateEdit( 0.55, 0.22, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_exc_Z'] = guiCreateEdit( 0.55, 0.29, 0.39, 0.06, '', true, hc_gui['main'] );
hc_gui['btn_excPick'] = guiCreateButton( 0.55, 0.36, 0.39, 0.06, 'Koordinaten', true, hc_gui['main'] ); --3
--Exit teleport--
hc_gui['label_extc'] = guiCreateLabel( 0.51, 0.45, 0.47, 0.1, 'Ort für Ausgang', true, hc_gui['main'] );
guiLabelSetHorizontalAlign( hc_gui['label_extc'], 'center', true );
hc_edit['edit_extc_X'] = guiCreateEdit( 0.55, 0.55, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_extc_Y'] = guiCreateEdit( 0.55, 0.62, 0.39, 0.06, '', true, hc_gui['main'] );
hc_edit['edit_extc_Z'] = guiCreateEdit( 0.55, 0.69, 0.39, 0.06, '', true, hc_gui['main'] );
hc_gui['btn_extcPick'] = guiCreateButton( 0.55, 0.76, 0.39, 0.06, 'Koordinaten', true, hc_gui['main'] ); --4
for i, v in pairs( hc_edit ) do guiEditSetReadOnly( v, true ); end;
hc_gui['btn_close'] = guiCreateButton( 0.88, 0.915, 0.09, 0.05, 'X', true, hc_gui['main'] );
hc_gui['btn_reset'] = guiCreateButton( 0.88-0.21, 0.915, 0.2, 0.05, 'Reset', true, hc_gui['main'] );
hc_gui['btn_create'] = guiCreateButton( 0.0, 0.915, 0.3, 0.05, 'Hausbau', true, hc_gui['main'] );
hc_gui['main_add'] = guiCreateWindow( scX-310-200, (scY/2-250/2)-450/4.5, 200, 250, 'Zusätzliche Infos', false );
hc_gui['edit_intID'] = guiCreateEdit( 0.09, 0.1, 0.35, 0.1, '', true, hc_gui['main_add'] );
hc_gui['label_intID'] = guiCreateLabel( 0.57, 0.09, 0.3, 0.1, 'Interior ID', true, hc_gui['main_add'] );
guiLabelSetVerticalAlign( hc_gui['label_intID'], 'center' );
hc_gui['edit_dim'] = guiCreateEdit( 0.09, 0.25, 0.35, 0.1, '', true, hc_gui['main_add'] );
hc_gui['label_dim'] = guiCreateLabel( 0.57, 0.249, 0.3, 0.1, 'Dimension', true, hc_gui['main_add'] );
guiLabelSetVerticalAlign( hc_gui['label_dim'], 'center' );
hc_gui['edit_cost'] = guiCreateEdit( 0.09, 0.4, 0.45, 0.1, '', true, hc_gui['main_add'] );
hc_gui['label_cost'] = guiCreateLabel( 0.57, 0.399, 0.3, 0.1, 'Kosten', true, hc_gui['main_add'] );
guiLabelSetVerticalAlign( hc_gui['label_cost'], 'center' );
for i, v in pairs( hc_gui ) do
guiSetFont( v, 'default-bold-small' );
if getElementType( v ) == 'gui-button' then
guiButtonSetColor( v, '0099FFFF' );
end;
if getElementType( v ) == 'gui-window' then
guiWindowSetMovable( v, false );
guiWindowSetSizable( v, false );
end;
end;
guiSetVisible( hc_gui['main'], false );
guiSetVisible( hc_gui['main_add'], false );
addEventHandler( 'onClientGUIClick', hc_gui['btn_close'], function( btn )
if btn ~= 'left' then return false; end;
triggerEvent( 'HP_SetVisible', me, false );
end, false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hc_gui['btn_ecPick'] then
local x, y, z = getElementPosition( me );
guiSetText( hc_edit['edit_ec_X'], x );
guiSetText( hc_edit['edit_ec_Y'], y );
guiSetText( hc_edit['edit_ec_Z'], z );
elseif source == hc_gui['btn_etcPick'] then
local x, y, z = getElementPosition( me );
guiSetText( hc_edit['edit_etc_X'], x );
guiSetText( hc_edit['edit_etc_Y'], y );
guiSetText( hc_edit['edit_etc_Z'], z );
elseif source == hc_gui['btn_excPick'] then
local x, y, z = getElementPosition( me );
guiSetText( hc_edit['edit_exc_X'], x );
guiSetText( hc_edit['edit_exc_Y'], y );
guiSetText( hc_edit['edit_exc_Z'], z );
elseif source == hc_gui['btn_extcPick'] then
local x, y, z = getElementPosition( me );
guiSetText( hc_edit['edit_extc_X'], x );
guiSetText( hc_edit['edit_extc_Y'], y );
guiSetText( hc_edit['edit_extc_Z'], z );
end;
end );
addEventHandler( 'onClientGUIClick', hc_gui['btn_reset'], function( btn )
if btn ~= 'left' then return false; end;
for i, v in pairs( hc_edit ) do
guiSetText( v, '' );
end;
for i, v in pairs( hc_gui ) do
if getElementType( v ) == 'gui-edit' then
guiSetText( v, '' );
end;
end;
end, false );
addEventHandler( 'onClientGUIChanged', root, function()
if source == hc_gui['edit_intID'] or source == hc_gui['edit_dim'] or source == hc_gui['edit_cost'] then
local currText = guiGetText( source );
local newText = string.gsub( currText, '[^0-9]', '' );
if newText ~= currText then
guiSetText( source, newText );
end;
end;
end );
addEventHandler( 'onClientGUIClick', hc_gui['btn_create'], function( btn )
if btn ~= 'left' then return false; end;
for i, v in pairs( hc_edit ) do
if guiGetText( v ) == '' then
outputChatBox( '* Alle Eingabefelder müssen ausgefüllt werden!', 255, 51, 36 );
return false;
end;
end;
for i, v in pairs( hc_gui ) do
if getElementType( v ) == 'gui-edit' and guiGetText( v ) == '' then
outputChatBox( '* Alle Eingabefelder müssen ausgefüllt werden!', 255, 51, 36 );
return false;
end;
end;
local tableToSend = {
[1] = guiGetText( hc_edit['edit_ec_X'] ), [4] = guiGetText( hc_edit['edit_etc_X'] ),
[2] = guiGetText( hc_edit['edit_ec_Y'] ), [5] = guiGetText( hc_edit['edit_etc_Y'] ),
[3] = guiGetText( hc_edit['edit_ec_Z'] ), [6] = guiGetText( hc_edit['edit_etc_Z'] ),
[7] = guiGetText( hc_edit['edit_exc_X'] ), [10] = guiGetText( hc_edit['edit_extc_X'] ),
[8] = guiGetText( hc_edit['edit_exc_Y'] ), [11] = guiGetText( hc_edit['edit_extc_Y'] ),
[9] = guiGetText( hc_edit['edit_exc_Z'] ), [12] = guiGetText( hc_edit['edit_extc_Z'] ),
[13] = guiGetText( hc_gui['edit_intID'] ),
[14] = guiGetText( hc_gui['edit_dim'] ),
[15] = guiGetText( hc_gui['edit_cost'] )
};
for i, v in ipairs( tableToSend ) do tableToSend[ i ] = tonumber( tableToSend[ i ] ); end;
triggerServerEvent( 'onPlayerAttemptCreateHouse', me, tableToSend );
triggerEvent( 'HP_SetVisible', me, false );
end, false );
hm_gui['main'] = guiCreateWindow( scX-360, scY-360, 350, 350, 'Hausverwaltung von German_Reallife_German', false );
guiSetAlpha( hm_gui['main'], 1.0 );
hm_gui['label_buy'] = guiCreateLabel( 0.03, 0.08, 0.255, 0.1, 'Kaufen', true, hm_gui['main'] );
guiLabelSetHorizontalAlign( hm_gui['label_buy'], 'center', true );
guiLabelSetColor( hm_gui['label_buy'], 0, 153, 255 );
hm_gui['bck_buy'] = guiCreateGridList( 0.03, 0.15, 0.255, 0.255, true, hm_gui['main'] );
hm_gui['icon_buy'] = guiCreateStaticImage( 0.005, 0.05, 1.0, 1.0, 'images/script/icon_buy.png', true, hm_gui['bck_buy'] );
hm_gui['label_sale'] = guiCreateLabel( 0.365, 0.08, 0.255, 0.1, 'Verkaufen', true, hm_gui['main'] );
guiLabelSetHorizontalAlign( hm_gui['label_sale'], 'center', true );
guiLabelSetColor( hm_gui['label_sale'], 0, 153, 255 );
hm_gui['bck_sale'] = guiCreateGridList( 0.365, 0.15, 0.255, 0.255, true, hm_gui['main'] );
hm_gui['icon_sale'] = guiCreateStaticImage( 0.005, 0.05, 1.0, 1.0, 'images/script/icon_sale.png', true, hm_gui['bck_sale'] );
hm_gui['label_key'] = guiCreateLabel( 0.7, 0.08, 0.255, 0.1, 'Neuer Code', true, hm_gui['main'] );
guiLabelSetHorizontalAlign( hm_gui['label_key'], 'center', true );
guiLabelSetColor( hm_gui['label_key'], 0, 153, 255 );
hm_gui['bck_key'] = guiCreateGridList( 0.7, 0.15, 0.255, 0.255, true, hm_gui['main'] );
hm_gui['icon_key'] = guiCreateStaticImage( 0.005, 0.05, 1.0, 1.0, 'images/script/icon_key.png', true, hm_gui['bck_key'] );
hm_gui['label_enter'] = guiCreateLabel( 0.03, 0.45, 0.265, 0.1, 'Rein gehen', true, hm_gui['main'] );
guiLabelSetHorizontalAlign( hm_gui['label_enter'], 'center', true );
guiLabelSetColor( hm_gui['label_enter'], 0, 153, 255 );
hm_gui['bck_enter'] = guiCreateGridList( 0.03, 0.53, 0.255, 0.255, true, hm_gui['main'] );
hm_gui['icon_enter'] = guiCreateStaticImage( 0.005, 0.05, 1.0, 1.0, 'images/script/icon_enter.png', true, hm_gui['bck_enter'] );
hm_gui['label_newowner'] = guiCreateLabel( 0.365, 0.45, 0.255, 0.1, 'Verschenken', true, hm_gui['main'] );
guiLabelSetHorizontalAlign( hm_gui['label_newowner'], 'center', true );
guiLabelSetColor( hm_gui['label_newowner'], 0, 153, 255 );
hm_gui['bck_newowner'] = guiCreateGridList( 0.365, 0.53, 0.255, 0.255, true, hm_gui['main'] );
hm_gui['icon_newowner'] = guiCreateStaticImage( 0.005, 0.05, 1.0, 1.0, 'images/script/icon_newowner.png', true, hm_gui['bck_newowner'] );
hm_gui['label_destroy'] = guiCreateLabel( 0.68, 0.45, 0.295, 0.1, 'Delete', true, hm_gui['main'] );
guiLabelSetHorizontalAlign( hm_gui['label_destroy'], 'center', true );
guiLabelSetColor( hm_gui['label_destroy'], 0, 153, 255 );
hm_gui['bck_destroy'] = guiCreateGridList( 0.7, 0.53, 0.255, 0.255, true, hm_gui['main'] );
hm_gui['icon_destroy'] = guiCreateStaticImage( 0.005, 0.05, 1.0, 1.0, 'images/script/icon_destroy.png', true, hm_gui['bck_destroy'] );
addEventHandler( 'onClientMouseEnter', root, function()
for i, v in ipairs( { 'buy', 'sale', 'key', 'enter', 'newowner', 'destroy' } ) do
if source == hm_gui['bck_'..v] or source == hm_gui['icon_'..v] then
guiSetAlpha( hm_gui['icon_'..v], 0.5 );
break;
end;
end;
end );
addEventHandler( 'onClientMouseLeave', root, function()
for i, v in ipairs( { 'buy', 'sale', 'key', 'enter', 'newowner', 'destroy' } ) do
if source == hm_gui['bck_'..v] or source == hm_gui['icon_'..v] then
guiSetAlpha( hm_gui['icon_'..v], 1.0 );
break;
end;
end;
end );
hm_gui['label_ID'] = guiCreateLabel( 0.05, 0.82, 0.25, 0.1, 'Haus ID: ', true, hm_gui['main'] );
hm_gui['label_owner'] = guiCreateLabel( 0.05, 0.88, 0.25, 0.1, 'Besitzer: ', true, hm_gui['main'] );
hm_gui['label_price'] = guiCreateLabel( 0.4, 0.82, 0.25, 0.1, 'Haus Preis: ', true, hm_gui['main'] );
hm_gui['label_ID_dyn'] = guiCreateLabel( 0.22, 0.82, 0.25, 0.1, '0', true, hm_gui['main'] );
hm_gui['label_owner_dyn'] = guiCreateLabel( 0.29, 0.88, 0.49, 0.1, 'none', true, hm_gui['main'] );
hm_gui['label_price_dyn'] = guiCreateLabel( 0.64, 0.82, 0.35, 0.1, '0', true, hm_gui['main'] );
hm_gui['btn_close'] = guiCreateButton( 0.89, 0.89, 0.07, 0.07, 'X', true, hm_gui['main'] );
guiSetVisible( hm_gui['main'], false );
addEventHandler( 'onClientGUIClick', hm_gui['btn_close'], function( btn )
if btn ~= 'left' then return false; end;
guiSetVisible( hm_gui['main'], false );
triggerServerEvent( 'setFrozen', me, false );
showCursor( false );
end, false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['icon_buy'] then
guiSetVisible( hm_gui['main'], false );
guiSetVisible( hm_gui['wnd_key_onBuy'], true );
guiSetText( hm_gui['onBuy_edit'], 'Code' );
playSound( 'sounds/click_icon.wav' );
guiSetInputEnabled( true );
elseif source == hm_gui['icon_sale'] then
guiSetVisible( hm_gui['main'], false );
guiSetVisible( hm_gui['wnd_key_onSale'], true );
guiSetText( hm_gui['onSale_edit'], 'Code' );
playSound( 'sounds/click_icon.wav' );
guiSetInputEnabled( true );
elseif source == hm_gui['icon_key'] then
guiSetVisible( hm_gui['main'], false );
guiSetVisible( hm_gui['wnd_key_onChange'], true );
guiSetText( hm_gui['onChange_edit_Old'], 'Alter Code' );
guiSetText( hm_gui['onChange_edit_New'], 'Neuer Code' );
guiSetText( hm_gui['onChange_edit_RepeatNew'], 'Code nochmals' );
playSound( 'sounds/click_icon.wav' );
guiSetInputEnabled( true );
elseif source == hm_gui['icon_newowner'] then
guiSetVisible( hm_gui['main'], false );
guiSetVisible( hm_gui['wnd_key_onNewOwner'], true );
guiSetText( hm_gui['onNewOwner_keyEdit'], 'Code' );
guiSetText( hm_gui['onNewOwner_nameEdit'], 'Player name' );
playSound( 'sounds/click_icon.wav' );
guiSetInputEnabled( true );
elseif source == hm_gui['icon_destroy'] then
guiSetVisible( hm_gui['main'], false );
guiSetVisible( hm_gui['wnd_onDestroy'], true );
playSound( 'sounds/click_icon.wav' );
end;
end );
--Buy
hm_gui['wnd_key_onBuy'] = guiCreateWindow( scX/2-250/2, scY/2-150/2, 250, 150, 'Code | Passwort', false );
guiSetAlpha( hm_gui['wnd_key_onBuy'], 1.0 );
hm_gui['onBuy_label'] = guiCreateLabel( 0.05, 0.15, 0.9, 0.4, "Sie sind dabei, das Haus zu kaufen. Geben Sie in Ihren Schlüssel so niemand sonst kann in diesem Haus zu bekommen. Vergessen sie es nicht!", true, hm_gui['wnd_key_onBuy'] );
guiLabelSetHorizontalAlign( hm_gui['onBuy_label'], 'center', true );
guiLabelSetColor( hm_gui['onBuy_label'], 0, 153, 255 );
hm_gui['onBuy_edit'] = guiCreateEdit( 0.14, 0.5, 0.7, 0.15, '', true, hm_gui['wnd_key_onBuy'] );
hm_gui['onBuy_confirm'] = guiCreateButton( 0.2, 0.75, 0.2, 0.15, 'OK', true, hm_gui['wnd_key_onBuy'] );
hm_gui['onBuy_cancel'] = guiCreateButton( 0.57, 0.75, 0.2, 0.15, 'Cancel', true, hm_gui['wnd_key_onBuy'] );
guiSetVisible( hm_gui['wnd_key_onBuy'], false );
--Sale
hm_gui['wnd_key_onSale'] = guiCreateWindow( scX/2-250/2, scY/2-150/2, 250, 150, 'Code | Passwort', false );
guiSetAlpha( hm_gui['wnd_key_onSale'], 1.0 );
hm_gui['onSale_label'] = guiCreateLabel( 0.05, 0.15, 0.9, 0.4, "Sie sind dabei, dieses Haus in der Hälfte es den Preis zu verkaufen. Geben Sie Ihre Schlüssel zu bestätigen, dass Sie der wirkliche Besitzer sind.", true, hm_gui['wnd_key_onSale'] );
guiLabelSetHorizontalAlign( hm_gui['onSale_label'], 'center', true );
guiLabelSetColor( hm_gui['onSale_label'], 0, 153, 255 );
hm_gui['onSale_edit'] = guiCreateEdit( 0.14, 0.5, 0.7, 0.15, '', true, hm_gui['wnd_key_onSale'] );
hm_gui['onSale_confirm'] = guiCreateButton( 0.2, 0.75, 0.2, 0.15, 'OK', true, hm_gui['wnd_key_onSale'] );
hm_gui['onSale_cancel'] = guiCreateButton( 0.57, 0.75, 0.2, 0.15, 'Cancel', true, hm_gui['wnd_key_onSale'] );
guiSetVisible( hm_gui['wnd_key_onSale'], false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onBuy_edit'] then guiSetText( hm_gui['onBuy_edit'], '' ); end;
if source == hm_gui['onBuy_confirm'] then
local passTxt = guiGetText( hm_gui['onBuy_edit'] );
if #passTxt >= getElementData( me, 'k_len' ) then
if not passTxt:find( ' ' ) then
triggerServerEvent( 'HOUSE_Buy', me, guiGetText( hm_gui['label_price_dyn'] ), guiGetText( hm_gui['onBuy_edit'] ) );
guiSetText( hm_gui['onBuy_edit'], '' );
guiSetVisible( hm_gui['wnd_key_onBuy'], false );
showCursor( false );
playSound( 'sounds/click_confirm.wav' );
guiSetInputEnabled( false );
else
outputChatBox( '* Die Hausschlüssel darf keine Leerzeichen enthalten!', 255, 51, 36 );
end;
else
outputChatBox( '* Die Schlüssellänge muss mindestens'..tostring( getElementData( me, 'k_len' ) )..' Zeichen lang sein!', 255, 51, 36 );
end;
elseif source == hm_gui['onBuy_cancel'] then
guiSetText( hm_gui['onBuy_edit'], '' );
guiSetVisible( hm_gui['wnd_key_onBuy'], false );
guiSetVisible( hm_gui['main'], true );
guiSetInputEnabled( false );
end;
end );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onSale_edit'] then guiSetText( hm_gui['onSale_edit'], '' ); end;
if source == hm_gui['onSale_confirm'] then
local mrk = getHouseByID( getElementData( me, 'mrk_in' ) );
if guiGetText( hm_gui['onSale_edit'] ) == getElementData( mrk, 'HS_INFO' )[8] then
triggerServerEvent( 'HOUSE_Sell', me );
outputChatBox( '* Sie haben nun Ihr Haus verkauft!', 255, 255, 0 );
guiSetText( hm_gui['onSale_edit'], '' );
guiSetVisible( hm_gui['wnd_key_onSale'], false );
playSound( 'sounds/click_confirm.wav' );
guiSetInputEnabled( false );
else
outputChatBox( '* Invalid key!', 255, 51, 36 );
end;
elseif source == hm_gui['onSale_cancel'] then
guiSetText( hm_gui['onSale_edit'], '' );
guiSetVisible( hm_gui['wnd_key_onSale'], false );
guiSetVisible( hm_gui['main'], true );
guiSetInputEnabled( false );
end;
end );
hm_gui['wnd_key_onChange'] = guiCreateWindow( scX/2-250/2, scY/2-250/2, 250, 250, 'Key | Password', false );
guiSetAlpha( hm_gui['wnd_key_onChange'], 1.0 );
hm_gui['onChange_label'] = guiCreateLabel( 0.05, 0.15, 0.9, 0.4, "So ändern Sie die Taste, geben in Ihren alten Schlüssel und dann eine neue.", true, hm_gui['wnd_key_onChange'] );
guiLabelSetHorizontalAlign( hm_gui['onChange_label'], 'center', true );
guiLabelSetColor( hm_gui['onChange_label'], 0, 153, 255 );
hm_gui['onChange_edit_Old'] = guiCreateEdit( 0.14, 0.3, 0.7, 0.1, 'Alter Code', true, hm_gui['wnd_key_onChange'] );
hm_gui['onChange_edit_New'] = guiCreateEdit( 0.14, 0.45, 0.7, 0.1, 'Neuer Code', true, hm_gui['wnd_key_onChange'] );
hm_gui['onChange_edit_RepeatNew'] = guiCreateEdit( 0.14, 0.6, 0.7, 0.1, 'Wiederholen', true, hm_gui['wnd_key_onChange'] );
hm_gui['onChange_confirm'] = guiCreateButton( 0.2, 0.75, 0.23, 0.11, 'OK', true, hm_gui['wnd_key_onChange'] );
hm_gui['onChange_cancel'] = guiCreateButton( 0.525, 0.75, 0.23, 0.11, 'Abbruch', true, hm_gui['wnd_key_onChange'] );
guiSetVisible( hm_gui['wnd_key_onChange'], false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onChange_edit_Old'] or source == hm_gui['onChange_edit_New'] or source == hm_gui['onChange_edit_RepeatNew'] then
guiSetText( source, '' );
elseif source == hm_gui['onChange_confirm'] then
local mrk = getHouseByID( getElementData( me, 'mrk_in' ) );
local currKey = getElementData( mrk, 'HS_INFO' )[8];
if guiGetText( hm_gui['onChange_edit_Old'] ) == currKey then
if #guiGetText( hm_gui['onChange_edit_New'] ) >= getElementData( me, 'k_len' ) then
if guiGetText( hm_gui['onChange_edit_New'] ) == guiGetText( hm_gui['onChange_edit_RepeatNew'] ) then
triggerServerEvent( 'HOUSE_ChangeKey', me, guiGetText( hm_gui['onChange_edit_RepeatNew'] ) );
outputChatBox( '* New Key has been set to #00FF00'..guiGetText( hm_gui['onChange_edit_RepeatNew'] ), 255, 51, 36, true );
guiSetText( hm_gui['onChange_edit_Old'], '' );
guiSetText( hm_gui['onChange_edit_New'], '' );
guiSetText( hm_gui['onChange_edit_RepeatNew'], '' );
guiSetVisible( hm_gui['wnd_key_onChange'], false );
guiSetVisible( hm_gui['main'], true );
playSound( 'sounds/click_confirm.wav' );
guiSetInputEnabled( false );
else
outputChatBox( '* Die neuen Schlüssel sind unterschiedlich. Überprüfen Sie ihre Ähnlichkeit!', 255, 51, 36 );
end;
else
outputChatBox( '* The key length must be at least '..tostring( getElementData( me, 'k_len' ) )..' characters long!', 255, 51, 36 );
end;
else
outputChatBox( '* Der alte Code ist Falsch ERROR: !!!Bitte in der Website vom Server melden!!!!', 255, 51, 36 );
end;
elseif source == hm_gui['onChange_cancel'] then
guiSetVisible( hm_gui['wnd_key_onChange'], false );
guiSetText( hm_gui['onChange_edit_Old'], '' );
guiSetText( hm_gui['onChange_edit_New'], '' );
guiSetText( hm_gui['onChange_edit_RepeatNew'], '' );
guiSetVisible( hm_gui['main'], true );
guiSetInputEnabled( false );
end;
end );
hm_gui['wnd_key_onNewOwner'] = guiCreateWindow( scX/2-250/2, scY/2-250/2, 250, 250, "Neuer Besistzer Name", false );
guiSetAlpha( hm_gui['wnd_key_onNewOwner'], 1.0 );
hm_gui['onNewOwner_label'] = guiCreateLabel( 0.05, 0.11, 0.9, 0.4, "Geben Sie in dem neuen Eigentümer des Kontos Namen und Ihre aktuellen Schlüssel. HINWEIS: Nach dieser Operation werden Sie nicht der Besitzer dieses Haus nicht mehr sein!", true, hm_gui['wnd_key_onNewOwner'] );
guiLabelSetHorizontalAlign( hm_gui['onNewOwner_label'], 'center', true );
guiLabelSetColor( hm_gui['onNewOwner_label'], 0, 153, 255 );
hm_gui['onNewOwner_keyEdit'] = guiCreateEdit( 0.14, 0.45, 0.7, 0.1, 'Code', true, hm_gui['wnd_key_onNewOwner'] );
hm_gui['onNewOwner_nameEdit'] = guiCreateEdit( 0.14, 0.6, 0.7, 0.1, 'Name', true, hm_gui['wnd_key_onNewOwner'] );
hm_gui['onNewOwner_confirm'] = guiCreateButton( 0.2, 0.75, 0.27, 0.11, 'OK', true, hm_gui['wnd_key_onNewOwner'] );
hm_gui['onNewOwner_cancel'] = guiCreateButton( 0.5, 0.75, 0.27, 0.11, 'Cancel', true, hm_gui['wnd_key_onNewOwner'] );
guiSetVisible( hm_gui['wnd_key_onNewOwner'], false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onNewOwner_keyEdit'] or source == hm_gui['onNewOwner_nameEdit'] then
guiSetText( source, '' );
end;
end );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onNewOwner_confirm'] then
if not guiGetText( hm_gui['onNewOwner_nameEdit'] ):find( ' ' ) then
if guiGetText( hm_gui['onNewOwner_nameEdit'] ) ~= getPlayerName( me ) then
if getPlayerByAccountName( guiGetText( hm_gui['onNewOwner_nameEdit'] ) ) then
if guiGetText( hm_gui['onNewOwner_keyEdit'] ) == getElementData( getHouseByID( getElementData( me, 'mrk_in' ) ), 'HS_INFO' )[8] then
triggerServerEvent( 'HOUSE_ChangeOwner', me, guiGetText( hm_gui['onNewOwner_nameEdit'] ) );
outputChatBox( '* The new owner of this house is #00FF00'..guiGetText( hm_gui['onNewOwner_nameEdit'] ):gsub( "%x%x%x%x%x%x", "" )..' for now!', 255, 51, 36, true );
guiSetText( hm_gui['onNewOwner_nameEdit'], '' );
guiSetVisible( hm_gui['wnd_key_onNewOwner'], false );
playSound( 'sounds/click_confirm.wav' );
guiSetInputEnabled( false );
else
outputChatBox( '*Falscher Code! versuchen Sie es erneut.', 255, 51, 36 );
guiSetText( hm_gui['onNewOwner_nameEdit'], '' );
guiSetText( hm_gui['onNewOwner_keyEdit'], '' );
end;
else
outputChatBox( '* Keine solche Spieler gefunden!', 255, 51, 36 );
end;
end;
else
outputChatBox( "* Der neue Eigentümer den Namen darf keine Leerzeichen enthalten!", 255, 51, 36 );
end;
elseif source == hm_gui['onNewOwner_cancel'] then
guiSetText( hm_gui['onNewOwner_keyEdit'], '' );
guiSetText( hm_gui['onNewOwner_nameEdit'], '' );
guiSetVisible( hm_gui['wnd_key_onNewOwner'], false );
guiSetVisible( hm_gui['main'], true );
guiSetInputEnabled( false );
end;
end );
hm_gui['wnd_onDestroy'] = guiCreateWindow( scX/2-250/2, scY/2-150/2, 250, 150, 'Destroy the House', false );
guiSetAlpha( hm_gui['wnd_onDestroy'], 1.0 );
hm_gui['onDestroy_label'] = guiCreateLabel( 0.05, 0.23, 0.9, 0.4, 'Sind Sie sicher, dass Sie dieses Haus zerstören?', true, hm_gui['wnd_onDestroy'] );
guiLabelSetHorizontalAlign( hm_gui['onDestroy_label'], 'center', true );
guiLabelSetColor( hm_gui['onDestroy_label'], 0, 153, 255 );
hm_gui['onDestroy_confirm'] = guiCreateButton( 0.2, 0.65, 0.2, 0.15, 'OK', true, hm_gui['wnd_onDestroy'] );
hm_gui['onDestroy_cancel'] = guiCreateButton( 0.57, 0.65, 0.2, 0.15, 'Cancel', true, hm_gui['wnd_onDestroy'] );
guiSetVisible( hm_gui['wnd_onDestroy'], false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onDestroy_confirm'] then
triggerServerEvent( 'HOUSE_Destroy', me );
guiSetVisible( hm_gui['wnd_onDestroy'], false );
showCursor( false );
playSound( 'sounds/click_confirm.wav' );
elseif source == hm_gui['onDestroy_cancel'] then
guiSetVisible( hm_gui['wnd_onDestroy'], false );
guiSetVisible( hm_gui['main'], true );
end;
end );
hm_gui['wnd_key_onEnter'] = guiCreateWindow( scX/2-250/2, scY/2-150/2, 250, 150, 'Key | Password', false );
guiSetAlpha( hm_gui['wnd_key_onEnter'], 1.0 );
hm_gui['onEnter_label'] = guiCreateLabel( 0.05, 0.15, 0.9, 0.4, "Sie sind dabei, das Haus zu betreten. Geben Sie in Ihren Schlüssel, bitte:", true, hm_gui['wnd_key_onEnter'] );
guiLabelSetHorizontalAlign( hm_gui['onEnter_label'], 'center', true );
guiLabelSetColor( hm_gui['onEnter_label'], 0, 153, 255 );
hm_gui['onEnter_edit'] = guiCreateEdit( 0.14, 0.5, 0.7, 0.15, '', true, hm_gui['wnd_key_onEnter'] );
hm_gui['onEnter_confirm'] = guiCreateButton( 0.2, 0.75, 0.2, 0.15, 'Confirm', true, hm_gui['wnd_key_onEnter'] );
hm_gui['onEnter_cancel'] = guiCreateButton( 0.57, 0.75, 0.2, 0.15, 'Cancel', true, hm_gui['wnd_key_onEnter'] );
guiSetVisible( hm_gui['wnd_key_onEnter'], false );
addEventHandler( 'onClientGUIClick', root, function( btn )
if btn ~= 'left' then return false; end;
if source == hm_gui['onEnter_edit'] then guiSetText( hm_gui['onEnter_edit'], '' ); end;
if source == hm_gui['icon_enter'] then
guiSetVisible( hm_gui['main'], false );
guiSetVisible( hm_gui['wnd_key_onEnter'], true );
guiSetText( hm_gui['onEnter_edit'], 'Key' );
playSound( 'sounds/click_icon.wav' );
guiSetInputEnabled( true );
elseif source == hm_gui['onEnter_confirm'] then
local mrk = getHouseByID( getElementData( me, 'mrk_in' ) );
if guiGetText( hm_gui['onEnter_edit'] ) == getElementData( mrk, 'HS_INFO' )[8] then
guiSetVisible( hm_gui['wnd_key_onEnter'], false );
showCursor( false );
triggerServerEvent( 'HOUSE_Enter', me );
playSound( 'sounds/click_confirm.wav' );
guiSetInputEnabled( false );
else
outputChatBox( '* Invalid key!', 255, 51, 36 );
end;
elseif source == hm_gui['onEnter_cancel'] then
guiSetVisible( hm_gui['wnd_key_onEnter'], false );
guiSetVisible( hm_gui['main'], true );
guiSetInputEnabled( false );
end;
end );
for i, v in pairs( hm_gui ) do
guiSetFont( v, 'default-bold-small' );
if getElementType( v ) == 'gui-button' then
guiButtonSetColor( v, '0099FFFF' );
end;
if getElementType( v ) == 'gui-window' then
guiWindowSetMovable( v, false );
guiWindowSetSizable( v, false );
end;
end;
setElementData( me, 'HP_Opened', false );
if getElementData( me, 'mrk_in' ) then triggerServerEvent( 'setFrozen', me, false ); end;
end );
addEventHandler( 'onClientResourceStop', resourceRoot, function()
if getElementData( me, 'mrk_in' ) then triggerServerEvent( 'setFrozen', me, false ); end;
end );
function getPlayerByAccountName( name )
for i, v in ipairs( getElementsByType( 'player' ) ) do
if getElementData( v, 'HS_accountName' ) == name then
return v;
end;
end;
return false;
end;
function guiButtonSetColor( btn, hex )
guiSetProperty( btn, "HoverTextColour", string.sub( hex, 7, 8 )..string.sub( hex, 1, 6 ) );
end;
addEvent( 'HP_SetVisible', true );
addEventHandler( 'HP_SetVisible', root, function( state )
guiSetVisible( hc_gui['main'], state );
guiSetVisible( hc_gui['main_add'], state );
showCursor( state );
setElementData( me, 'HP_Opened', state );
if state then
bindKey( 'mouse2', 'down', showHide );
else
unbindKey( 'mouse2', 'down', showHide );
end;
end );
function showHide()
showCursor( not isCursorShowing() );
end;
local cursorOverGUI = false;
addEventHandler( 'onClientMouseEnter', root, function() cursorOverGUI = true; end );
addEventHandler( 'onClientMouseLeave', root, function() cursorOverGUI = false; end );
addEventHandler( 'onClientElementDataChange', me, function( name )
if name == 'HP_Opened' then
if getElementData( me, name ) then
addEventHandler( 'onClientRender', root, drawCrsrInfo );
else
removeEventHandler( 'onClientRender', root, drawCrsrInfo );
end;
end;
end );
function drawCrsrInfo()
if isCursorShowing() and not cursorOverGUI then
local x, y = getCursorPosition();
if x and y then
dxDrawText( 'RMB zum Anzeigen / Verbergen Cursor', scX * x + 10, scY * y - 10, scX, scY, tocolor( 255, 255, 255, 255 ), 1, 'default', 'left', 'top', false, false, true );
end;
end;
end;
addEvent( 'openHouseManagementWnd', true );
addEventHandler('openHouseManagementWnd', root, function( rt, cursor )
for i, cname in ipairs( { 'buy', 'sale', 'key', 'enter', 'newowner', 'destroy' } ) do
guiSetEnabled( hm_gui['bck_'..cname], rt[i] );
guiSetEnabled( hm_gui['icon_'..cname], rt[i] );
if not rt[i] then
guiSetAlpha( hm_gui['icon_'..cname], 0.3 );
else
guiSetAlpha( hm_gui['icon_'..cname], 1.0 );
end;
end;
guiSetText( hm_gui['label_ID_dyn'], rt[7] );
guiSetText( hm_gui['label_owner_dyn'], rt[8] );
guiSetText( hm_gui['label_price_dyn'], rt[9] );
guiSetVisible( hm_gui['main'], true );
if cursor then showCursor( true ); end;
end );
addEventHandler( 'onClientPlayerWasted', me, function()
for i, v in pairs( hc_gui ) do if getElementType( hc_gui[ i ] ) == 'gui-window' then guiSetVisible( hc_gui[ i ], false ); end; end;
for i, v in pairs( hm_gui ) do if getElementType( hm_gui[ i ] ) == 'gui-window' then guiSetVisible( hm_gui[ i ], false ); end; end;
if isCursorShowing() then showCursor( false ); end;
triggerEvent( 'HP_SetVisible', me, false );
guiSetInputEnabled( false );
end );
local l_w = 64;
local l_h = 64;
local l_ratio = l_w / l_h;
local lscale_w = 1920 / scX;
l_w = l_w / lscale_w;
l_h = l_w / l_ratio;
addEventHandler( 'onClientRender', root, function()
for i, v in ipairs( getElementsByType( 'marker', getResourceRootElement(), true ) ) do
if getElementData( v, 'HS_INFO' ) then
local x, y, z = getElementPosition( v );
local cx, cy, cz = getCameraMatrix();
if isLineOfSightClear( cx, cy, cz, x, y, z, false, false, false, false, false, false, false, v ) then
local dist = getDistanceBetweenPoints3D( cx, cy, cz, x, y, z );
if dist >= 5 and dist <= 15 then
local px, py = getScreenFromWorldPosition( x, y, z + 1.8, 0.06 );
if px then
local owner = getElementData( v, 'HS_INFO' )[7];
local price = getElementData( v, 'HS_INFO' )[6];
local r, g, b = getMarkerColor( v );
if r == 0 and g == 153 and b == 255 then
r, g, b = 255, 255, 255;
end;
if owner then
if owner == '' then owner = 'none'; end;
dxDrawText( 'Besitzer: '..owner, px + 1, py + scY/38, px + 1, py + 1, tocolor( 0, 0, 0, 255 ), 1, 'default-bold', 'center', 'center', false, false );
dxDrawText( 'Besitzer: '..owner, px, py + scY/38, px, py, tocolor( 255, 255, 255, 255 ), 1, 'default-bold', 'center', 'center', false, false );
dxDrawText( 'Preis: $ '..tostring( price ), px + 1, py + scY/15, px + 1, py + 1, tocolor( 0, 0, 0, 255 ), 1, 'default-bold', 'center', 'center', false, false );
dxDrawText( 'Preis: $ '..tostring( price ), px, py + scY/15, px, py, tocolor( 255, 255, 255, 255 ), 1, 'default-bold', 'center', 'center', false, false );
dxDrawImage( px-l_w/2, py - scY/17, l_w, l_h, 'images/script/house_.png', 0, 0, 0, tocolor( r, g, b, 255 ) );
end;
end;
end;
end;
end;
end;
end );
function getHouseByID( ID )
for i, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do
if getElementData( v, 'HS_INFO' ) then
if getElementData( v, 'HS_INFO' )[9] == ID then
return v;
end;
end;
end;
return false;
end;
bindKey( 'i', 'both', function( key, keyState )
if keyState == 'down' then
for k, v in ipairs ( getElementsByType( 'marker', getResourceRootElement() ) ) do
if getElementData( v, 'HS_INFO' ) and getElementData( v, 'HS_INFO' )[7] then
if getElementData( v, 'HS_INFO' )[7] ~= '' then
createBlipAttachedTo( v, 32 );
else
createBlipAttachedTo( v, 31 );
end;
end;
end;
else
for k, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do
if getElementData( v, 'HS_INFO' ) then
for k, elem in ipairs( getAttachedElements( v ) ) do
if getElementType( elem ) == 'blip' then
destroyElement( elem );
end;
end;
end;
end;
end;
end );
Alles anzeigen
So ich hoffe ihr könnt mir damit helfen *?*
Danke im vorraus *:)*
Ps: Es sollte mit Godmother kompatibel sein am besten in der Spawnpunktfunktion mit drinne aber ich weiß nicht wo die eingestellt ist *?(*