Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <h_interiors>
- #define MAX_HOUSES 10
- #define HOUSEFILE "test.houses"
- #define HOUSEDATAFILE "test.housedata"
- #define stf(%0) floatstr(%0)
- #define stv(%0) strval(%0)
- #define UNALLOWED_NAME "-1NOBODY-1"
- #define _GetPlayerMoney(%0) GetPlayerMoney(%0)
- #define _GivePlayerMoney(%0,%1) GivePlayerMoney(%0,%1)
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- enum houseinfo {
- sID,
- InteriorID
- }
- enum housedata {
- sID,
- Prize,
- AllowRent,
- Owner[ MAX_PLAYER_NAME ],
- Tenant[ MAX_PLAYER_NAME ],
- Rent,
- Lockstate
- }
- new HouseData[ MAX_HOUSES ][ housedata ];
- new House[ MAX_HOUSES ][ houseinfo ];
- new ActualHouse[ MAX_PLAYERS ];
- new CreatedHouses;
- public OnGameModeInit()
- {
- LoadHouses ( );
- LoadHouseData ( );
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
- }
- public OnGameModeExit()
- {
- SaveHouseData ( );
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new name[ MAX_PLAYER_NAME ];
- GetPlayerName ( playerid , name , MAX_PLAYER_NAME );
- if ( !strcmp ( name , UNALLOWED_NAME ) )
- {
- SendClientMessage ( playerid , 0x666666AA , "Es tut uns leid, aber dieser Name ist nicht zulässig." );
- Kick ( playerid );
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if ( !strcmp ( cmdtext , "/lockhouse" ) )
- {
- new HouseDataIndex = GetPlayerHouse ( playerid );
- if ( HouseDataIndex != -1 )
- if ( HouseData[ HouseDataIndex ][ Lockstate ] == 0 )
- {
- HouseData[ HouseDataIndex ][ Lockstate ] = 1;
- SendClientMessage ( playerid , 0x666666AA , "Du hast das Haus abgeschlossen!" );
- }
- else
- {
- HouseData[ HouseDataIndex ][ Lockstate ] = 0;
- SendClientMessage ( playerid , 0x666666AA , "Du hast das Haus aufgeschlossen!" );
- }
- else
- SendClientMessage ( playerid , 0x666666AA , "Du besitzt kein Haus!" );
- }
- if ( !strcmp ( cmdtext , "/buyhouse" ) )
- {
- new HouseDataIndex = GetHouseDataIndex ( ActualHouse[ playerid ] ) , PlayerName[ MAX_PLAYER_NAME ] , string[ 128 ];
- GetPlayerName ( playerid , PlayerName , MAX_PLAYER_NAME );
- if ( ActualHouse[ playerid ] != -1 )
- {
- if ( GetPlayerHouse ( playerid ) != -1 )
- return SendClientMessage ( playerid , 0x666666AA , "Du besitzt schon ein Haus!" );
- if ( !strcmp ( HouseData[ HouseDataIndex ][ Owner ] , UNALLOWED_NAME ) )
- {
- if ( HouseData[ HouseDataIndex ][ Prize ] < _GetPlayerMoney ( playerid ) )
- {
- _GivePlayerMoney ( playerid , 0 - HouseData[ HouseDataIndex ][ Prize ] );
- format ( HouseData[ HouseDataIndex ][ Owner ] , MAX_PLAYER_NAME , PlayerName );
- format ( string , 128 , "Du hast die dieses Haus für %d$ gekauft!" , HouseData[ HouseDataIndex ][ Prize ] );
- }
- else
- format ( string , 128 , "Du hast nicht genug Geld für dieses Haus. Du benötigst %d$!" , HouseData[ HouseDataIndex ][ Prize ] );
- return SendClientMessage ( playerid , 0x666666AA , string );
- }
- else
- return SendClientMessage ( playerid , 0x666666AA , "Dieses Haus ist nicht zu verkaufen!" );
- }
- else
- return SendClientMessage ( playerid , 0x666666AA , "Du befindest dich in keinem Haus!" );
- }
- if ( !strcmp ( cmdtext , "/renthouse" ) )
- {
- new HouseDataIndex = GetHouseDataIndex ( ActualHouse[ playerid ] ) , PlayerName[ MAX_PLAYER_NAME ] , string[ 128 ];
- GetPlayerName ( playerid , PlayerName , MAX_PLAYER_NAME );
- if ( ActualHouse[ playerid ] != -1 )
- {
- if ( GetPlayerHouse ( playerid ) != -1 )
- return SendClientMessage ( playerid , 0x666666AA , "Du wohnst schon in einem Haus!" );
- if ( !strcmp ( HouseData[ HouseDataIndex ][ Tenant ] , UNALLOWED_NAME ) && HouseData[ HouseDataIndex ][ AllowRent ] && strcmp ( HouseData[ HouseDataIndex ][ Owner ] , PlayerName ) )
- {
- format ( HouseData[ HouseDataIndex ][ Tenant ] , MAX_PLAYER_NAME , PlayerName );
- format ( string , 128 , "Du bist nun Untermieter dieses Haus für %d$!" , HouseData[ HouseDataIndex ][ Rent ] );
- }
- else
- return SendClientMessage ( playerid , 0x666666AA , "Du kannst hier nicht einmieten." );
- }
- else
- return SendClientMessage ( playerid , 0x666666AA , "Du befindest dich in keinem Haus!" );
- }
- if ( !strcmp ( cmdtext , "/money" ) )
- {
- GivePlayerMoney(playerid,100000);
- }
- return 1;
- }
- public OnPlayerEnterInterior(playerid ,interior ,method)
- {
- new HouseIndex = GetHouseIndex ( interior ) , HouseDataIndex = GetHouseDataIndex ( interior ) , PlayerName[ MAX_PLAYER_NAME ];
- GetPlayerName ( playerid , PlayerName , MAX_PLAYER_NAME );
- if ( HouseIndex != -1 && HouseDataIndex != -1 )
- if ( HouseData[ HouseDataIndex ][ Lockstate ] == 0 )
- {
- if ( strcmp ( PlayerName , HouseData[ HouseDataIndex ][ Owner ] ) && strcmp ( PlayerName , HouseData[ HouseDataIndex ][ Tenant ] ) )
- {
- new string[ 128 ];
- if ( strcmp ( UNALLOWED_NAME , HouseData[ HouseDataIndex ][ Owner ] ) )
- if ( !strcmp ( UNALLOWED_NAME , HouseData[ HouseDataIndex ][ Tenant ] ) )
- if ( HouseData[ HouseDataIndex ][ AllowRent ] == 0 )
- format ( string , 128 , "Dieses Haus gehört %s." , HouseData[ HouseDataIndex ][ Owner ] );
- else
- format ( string , 128 , "Dieses Haus gehört %s. Hier kannst du für %d$ einmieten! Benutze \"renthouse\"" , HouseData[ HouseDataIndex ][ Owner ] , HouseData[ HouseDataIndex ][ Rent ] );
- else
- format ( string , 128 , "Dieses Haus gehört %s. Mieter ist %s." , HouseData[ HouseDataIndex ][ Owner ] , HouseData[ HouseDataIndex ][ Tenant ] );
- else
- format ( string , 128 , "Dieses Haus ist für %d$ zu verkaufen. Zum Kaufen benutze \"/buyhouse\"" , HouseData[ HouseDataIndex ][ Prize ] );
- SendClientMessage ( playerid , 0x666666AA , string );
- }
- }
- else
- {
- SendClientMessage ( playerid , 0x666666AA , "Dieses Haus ist abgeschlossen!" );
- return 0;
- }
- return 1;
- }
- public OnPlayerEnteredInterior(playerid ,interior ,method)
- {
- ActualHouse[ playerid ] = interior;
- return 1;
- }
- public OnPlayerLeaveInterior(playerid, interior, method)
- {
- new HouseIndex = GetHouseIndex ( interior ) , HouseDataIndex = GetHouseDataIndex ( interior );
- if ( HouseIndex != -1 && HouseDataIndex != -1 )
- if ( HouseData[ HouseDataIndex ][ Lockstate ] == 1 )
- {
- SendClientMessage ( playerid , 0x666666AA , "Die Tür ist verschlossen!" );
- return 0;
- }
- return 1;
- }
- public OnPlayerLeavedInterior(playerid, interior, method)
- {
- ActualHouse[ playerid ] = -1;
- return 1;
- }
- LoadHouses ( )
- {
- new File:houses = fopen ( HOUSEFILE, io_read ) , content[ 512 ];
- if ( !houses )
- return 0;
- new house;
- while ( fread ( houses , content ) )
- {
- new v[ 23 ][ 64 ] , bool:stop = false , s;
- while ( stop != true )
- {
- if ( strfind ( content , "|" ) != -1 )
- {
- for ( new x; x < strfind ( content , "|" ); x++ )
- v[ s ][ x ] = content[ x ];
- strdel ( content , 0 , strfind ( content , "|" ) + 1 );
- }
- else
- {
- for ( new x; x < strlen ( content ); x++ )
- v[ s ][ x ] = content[ x ];
- stop = true;
- }
- if ( !strcmp ( v[ s ] , "NULL" , true ) )
- format ( v[ s ] , 16 , "%d" , NULL );
- if ( !strcmp ( v[ s ] , "YES" , true ) )
- format ( v[ s ] , 16 , "%d" , YES );
- if ( !strcmp ( v[ s ] , "NO" , true ) )
- format ( v[ s ] , 16 , "%d" , NO );
- s++;
- }
- House[ house ][ sID ] = stv ( v[ 0 ] );
- House[ house ][ InteriorID ] = AddInterior ( v[ 1 ] , stv ( v[ 2 ] ) , stv ( v[ 3 ] ) , stf ( v[ 4 ] ) , stf ( v[ 5 ] ) , stf ( v[ 6 ] ) , stf ( v[ 7 ] ) , stv ( v[ 8 ] ) , stv ( v[ 9 ] ) , stv ( v[ 10 ] ) , stv ( v[ 11 ] ) , v[ 12 ] , stv ( v[ 13 ] ) , stv ( v[ 14 ] ) , stf (v[ 15 ] ) , stf ( v[ 16 ] ) , stf ( v[ 17 ] ) , stf ( v[ 18 ] ) , stv ( v[ 19 ] ) , stv ( v[ 20 ] ) , stv ( v[ 21 ] ) , stv ( v[ 22 ] ) );
- house++;
- CreatedHouses++;
- }
- fclose ( houses );
- return 1;
- }
- LoadHouseData ( )
- {
- new File:houses = fopen ( HOUSEDATAFILE , io_read ) , content[ 512 ];
- if ( !houses )
- return 0;
- new house;
- while ( fread ( houses , content ) )
- {
- new v[ 7 ][ 64 ] , bool:stop = false , s;
- while ( stop != true )
- {
- if ( strfind ( content , "|" ) != -1 )
- {
- for ( new x; x < strfind ( content , "|" ); x++ )
- v[ s ][ x ] = content[ x ];
- strdel ( content , 0 , strfind ( content , "|" ) + 1 );
- }
- else
- {
- for ( new x; x < strlen ( content ); x++ )
- v[ s ][ x ] = content[ x ];
- stop = true;
- }
- s++;
- }
- HouseData[ house ][ sID ] = stv ( v[ 0 ] );
- HouseData[ house ][ Prize ] = stv ( v[ 1 ] );
- HouseData[ house ][ AllowRent ] = stv ( v[ 2 ] );
- format ( HouseData[ house ][ Owner ] , 64 , v[ 3 ] );
- format ( HouseData[ house ][ Tenant ] , 64 , v[ 4 ] );
- HouseData[ house ][ Rent ] = stv ( v[ 5 ] );
- HouseData[ house ][ Lockstate ] = stv ( v[ 6 ] );
- house++;
- }
- fclose ( houses );
- if ( CreatedHouses != house )
- printf ( "The Housefiles may are incorrect. Please fix it to prevent Bugs!" );
- return 1;
- }
- SaveHouseData ( )
- {
- new File:houses = fopen ( HOUSEDATAFILE , io_write );
- fclose ( houses );
- houses = fopen ( HOUSEDATAFILE , io_append );
- new Line[ 128 ];
- if ( !houses )
- return 0;
- for ( new i; i < CreatedHouses + 1; i++ )
- {
- format ( Line , 128 , "%d|%d|%d|%s|%s|%d|%d\r\n" , HouseData [ i ][ sID ] , HouseData[ i ][ Prize ] , HouseData[ i ][ AllowRent ] , HouseData[ i ][ Owner ] , HouseData[ i ][ Tenant ] , HouseData[ i ][ Rent ] , HouseData[ i ][ Lockstate ] );
- fwrite ( houses , Line );
- }
- fclose ( houses );
- return 1;
- }
- GetHouseIndex ( interior )
- {
- for ( new i; i < CreatedHouses + 1; i++ )
- if ( House[ i ][ InteriorID ] == interior )
- return i;
- return -1;
- }
- GetHouseDataIndex ( interior )
- {
- new saveID = House[ GetHouseIndex ( interior ) ][ sID ];
- for ( new i; i < CreatedHouses + 1; i++ )
- if ( HouseData[ i ][ sID ] == saveID )
- return i;
- return -1;
- }
- GetPlayerHouse ( playerid )
- {
- new PlayerName[ MAX_PLAYER_NAME ];
- GetPlayerName ( playerid , PlayerName , MAX_PLAYER_NAME );
- for ( new i; i < CreatedHouses; i++ )
- if ( !strcmp ( HouseData[ i ][ Owner ] , PlayerName ) || !strcmp ( HouseData[ i ][ Tenant ] , PlayerName ) )
- return i;
- return -1;
- }
- /*
- stock GetPlayeridByName ( name[ ] )
- {
- new TempName[ MAX_PLAYER_NAME ];
- for ( new i; i < MAX_PLAYERS; i++ )
- {
- GetPlayerName ( i , TempName , MAX_PLAYER_NAME );
- if ( strcmp ( TempName , name ) )
- return i;
- }
- }
- stock HandleAllRents ( )
- {
- for ( new i; i < CreatedHouses + 1; i++ )
- {
- if ( HouseData[ GetHouseDataIndex ( i ) ][ RentAllowed ] && strcmp ( HouseData[ GetHouseDataIndex ( i ) ][ Tenant ] , UNALLOWED_NAME ) )
- {
- new Houseowner = GetPlayeridByName ( HouseData[ GetHouseDataIndex ( i ) ][ Owner ] );
- new Tenant = GetPlayeridByName ( HouseData[ GetHouseDataIndex ( i ) ][ Tenant ] );
- }
- }
- }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement