House System - Y_Ini
#1

At the beginning sorry for my english. (I use ****** translator)
Mam 2 problemy z systemem domуw (Y_Ini)

-Jak wejde w CheckPoint pojawia mi się GUI, że ten dom jest mуj a tak na prawdę nie jest.
-Jak po robię kilka domуw, to GUI się wyświetla tylko po wejściu w ostani stworzony dom, w poprzednio stworzonych domach nic się nie pojawia.

Jeszcze raz przepraszam za mуj język angielski, i liczę na pomoc.

Kod :

Код:
#include <a_samp>
#include <YSI/y_ini>
#include <zcmd>
#include <sscanf2>
#include <streamer>

#define GREY       0xAFAFAFAA
#define BLUE2      0x4682B4FF
#define RED        0xFF0000AA
#define YELLOW     0xE9E312FF
#define ORANGE     0xFF9900AA
#define WHITE      0xFFFEFFFF
#define GREEN      0x33AA33AA
#define BLUE       0x0000FFFF
#define LIGHTGREEN 0x90EE90FF
#define OLIVE      0x808000FF
#define SALAMON    0xFA8072FF
#define BLACK      0x000000FF

#define C_GREY       "{AFAFAF}"
#define C_BLUE2      "{4682B4}"
#define C_RED        "{FF0000}"
#define C_YELLOW     "{E9E312}"
#define C_ORANGE     "{FF9900}"
#define C_WHITE      "{FFFEFF}"
#define C_GREEN      "{33AA33}"
#define C_BLUE       "{0000FF}"
#define C_LIGHTGREEN "{90EE90}"
#define C_OLIVE      "{808000}"
#define C_SALAMON    "{FA8072}"
#define C_BLACK      "{000000}"

#define MAX_HOUSE 100
#define HousePATH "GameMod/House/%d.ini"

enum hInfo
{
	hOwner[24],
	Text3D:hLabel,
	hPickup,
	Float:hEnterX,
	Float:hEnterY,
	Float:hEnterZ,
	Float:hExitX,
	Float:hExitY,
	Float:hExitZ,
	hInterior,
	hCost,
	hSell
};

new HouseInfo[MAX_PLAYERS][hInfo];
new MaDom[MAX_PLAYERS];
new Float:X, Float:Y, Float:Z;
new houseid;
new HouseCount;

forward CreateHouse(playerid, koszt, sprzedaz, intek);
forward LoadHouse_data(playerid, name[], value[]);

public OnPlayerConnect(playerid)
{
	HouseInfo[playerid][hOwner] = 0;
	HouseInfo[playerid][hEnterX] = 0;
	HouseInfo[playerid][hEnterY] = 0;
	HouseInfo[playerid][hEnterZ] = 0;
	HouseInfo[playerid][hExitX] = 0;
	HouseInfo[playerid][hExitY] = 0;
	HouseInfo[playerid][hExitZ] = 0;
	HouseInfo[playerid][hInterior] = 0;
	HouseInfo[playerid][hCost] = 0;
	HouseInfo[playerid][hSell] = 0;
	MaDom[playerid] = 0;
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	if(MaDom[playerid] == 1)
	{
        for(new h = 0; h < sizeof(HouseInfo); h++)
    	{
    	    new INI:File = INI_Open(HousePath());
    	    INI_WriteString(File, "Wlasciciel", HouseInfo[playerid][hOwner]);
    	    INI_WriteFloat(File, "WejscieX", HouseInfo[playerid][hEnterX]);
    	    INI_WriteFloat(File, "WejscieY", HouseInfo[playerid][hEnterY]);
    	    INI_WriteFloat(File, "WejscieZ", HouseInfo[playerid][hEnterZ]);
    	    INI_WriteFloat(File, "WyjscieX", HouseInfo[playerid][hExitX]);
    	    INI_WriteFloat(File, "WyjscieY", HouseInfo[playerid][hExitY]);
    	    INI_WriteFloat(File, "WyjscieZ", HouseInfo[playerid][hExitZ]);
    	    INI_WriteInt(File, "Interior", HouseInfo[playerid][hInterior]);
    	    INI_WriteInt(File, "Cena", HouseInfo[playerid][hCost]);
    	    INI_WriteInt(File, "Sprzedaz", HouseInfo[playerid][hSell]);
    	}
    }
    return 1;
 }
	    
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
	for(new h = 0; h < MAX_HOUSE; h++)
    {
    	if(checkpointid == HouseInfo[playerid][hPickup])
    	{
    		if(!fexist(HousePath()))
    		{
    			INI_ParseFile(HousePath(), "LoadHouse_%d", .bExtra = true, .extra = playerid);
    		    ShowPlayerDialog(playerid, 5000, DIALOG_STYLE_MSGBOX, "Dom", "This is your home \n Do you want to enter it? ", "Tak", "Nie");
    		}
    	    else
        	{
    		    ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_MSGBOX, "Dom", "This house is for sale. Want to buy it? ", "Tak", "Nie");
    	    }
		}
	}
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(dialogid == 5001)
	{
		if(response)
		{
            if(GetPlayerMoney(playerid) > HouseInfo[playerid][hCost])
	    	{
				MaDom[playerid] = 1;
            	SendClientMessage(playerid, GREEN, "House. ");

            	new string[128];
            	format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_BLUE2"%s ", PlayerName(playerid));
             	Update3DTextLabelText(HouseInfo[playerid][hLabel], RED, string);

            	new INI:File = INI_Open(HousePath());
            	INI_WriteString(File, "Wlasciciel", PlayerName(playerid));
            	INI_WriteFloat(File, "WejscieX", HouseInfo[playerid][hEnterX]);
             	INI_WriteFloat(File, "WejscieY", HouseInfo[playerid][hEnterY]);
               	INI_WriteFloat(File, "WejscieZ", HouseInfo[playerid][hEnterZ]);
             	INI_WriteFloat(File, "WyjscieX", HouseInfo[playerid][hExitX]);
              	INI_WriteFloat(File, "WyjscieY", HouseInfo[playerid][hExitY]);
               	INI_WriteFloat(File, "WyjscieZ", HouseInfo[playerid][hExitZ]);
              	INI_WriteInt(File, "Interior", HouseInfo[playerid][hInterior]);
                INI_WriteInt(File, "Cena", HouseInfo[playerid][hCost]);
             	INI_WriteInt(File, "Sprzedaz", HouseInfo[playerid][hSell]);
            	INI_Close(File);
		    }
		    else SendClientMessage(playerid, LIGHTGREEN, "You can not afford this house! ");
    	}
	}
	return 1;
}

cmd(nowydom, playerid, params[])
{
	new cost, sell, interior;
	
	if(sscanf(params, "ddd", cost, sell, interior))
		return SendClientMessage(playerid, SALAMON, "Wpisz : /nowydom cost price interior ");
		
	CreateHouse(playerid, cost, sell, interior);
	return 1;
}

public CreateHouse(playerid, koszt, sprzedaz, intek)
{

	GetPlayerPos(playerid, X, Y, Z);
	new INI:File = INI_Open(HousePath());
	
	HouseCount++;
	HouseInfo[playerid][hEnterX] = X;
	HouseInfo[playerid][hEnterY] = Y;
	HouseInfo[playerid][hEnterZ] = Z;
	HouseInfo[playerid][hInterior] = intek;
	HouseInfo[playerid][hCost] = koszt;
	HouseInfo[playerid][hSell] = sprzedaz;
	
	INI_WriteFloat(File, "WejscieX", HouseInfo[playerid][hEnterX]);
	INI_WriteFloat(File, "WejscieY", HouseInfo[playerid][hEnterY]);
	INI_WriteFloat(File, "WejscieZ", HouseInfo[playerid][hEnterZ]);
	INI_WriteFloat(File, "WyjscieX", 0);
	INI_WriteFloat(File, "WyjscieY", 0);
	INI_WriteFloat(File, "WyjscieZ", 0);
	INI_WriteInt(File, "Interior", HouseInfo[playerid][hInterior]);
	INI_WriteInt(File, "Cena", HouseInfo[playerid][hCost]);
	INI_WriteInt(File, "Sprzedaz", HouseInfo[playerid][hSell]);
	INI_Close(File);
	
	new string[128];
	format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_YELLOW"brak \n"C_BLUE2"Koszt : "C_YELLOW"%d\n", koszt);
	HouseInfo[playerid][hLabel] = Create3DTextLabel(string, RED, X, Y, Z, 7.0, 0);
	
	HouseInfo[houseid][hPickup] = CreateDynamicCP(X, Y, Z, 2, 0, 0, 0, 20);
	return 1;
}

public LoadHouse_data(playerid, name[], value[])
{
	new Name[24], string[128];
	GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
	INI_String("Wlasciciel", Name, 48);
	INI_Float("WejscieX", HouseInfo[playerid][hEnterX]);
	INI_Float("WejscieY", HouseInfo[playerid][hEnterY]);
	INI_Float("WejscieZ", HouseInfo[playerid][hEnterZ]);
	INI_Float("WyjscieX", HouseInfo[playerid][hExitX]);
	INI_Float("WyjscieY", HouseInfo[playerid][hExitY]);
	INI_Float("WyjscieZ", HouseInfo[playerid][hExitZ]);
	INI_Int("Interior", HouseInfo[playerid][hInterior]);
	INI_Int("Cena", HouseInfo[playerid][hCost]);
	INI_Int("Sprzedaz", HouseInfo[playerid][hSell]);
	
	if(HouseInfo[playerid][hOwner] == 1)
	{
    	format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_YELLOW"%s \n", Name);
    	HouseInfo[playerid][hLabel] = Create3DTextLabel(string, RED, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterZ], HouseInfo[playerid][hEnterZ], 7.0, 0);
    	HouseInfo[houseid][hPickup] = CreateDynamicCP(HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 2, 0, 0, 0, 20);
	}
	else
	{
    	format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_YELLOW"brak \n"C_BLUE2"Koszt : "C_YELLOW"%d\n", HouseInfo[playerid][hCost]);
    	HouseInfo[playerid][hLabel] = Create3DTextLabel(string, RED, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterZ], HouseInfo[playerid][hEnterZ], 7.0, 0);
    	HouseInfo[houseid][hPickup] = CreateDynamicCP(HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 2, 0, 0, 0, 20);
    }
	return 1;
}

stock HousePath()
{
	new string[256];
	format(string, sizeof string, HousePATH, HouseCount);
	return string;
}

stock PlayerName(playerid)
{
	new name[24];
	GetPlayerName(playerid, name, MAX_PLAYER_NAME);
	return name;
}
Reply
#2

English version please?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)