Wysłany: 2012-02-11, 21:09
Mlody951
Wiek: 28 Na forum: 5229 dni Posty: 7
Nick w MP: Mlody
Piwa : 2
Cze??, ju? ?adne par? godzin pr?buj? robi? system dom?w w Y_Ini.
Pocz?tek ?adnie mi szed?, ale potem ju? tak pi?knie nie by?o.
No wi?c tak.
Wpisuj? /nowydom (komenda od stworzenia nowego domu). Po wpisaniu tej komendy ma ustawi? cen? domu, cen? domu jak si? go b?dzie sprzedawa?, postawi? pickupa i 3DTextLabela oraz zapisa? do pliku Wejscie X, Y, Z, w?a?ciciela (tutaj jest ustawione na 0 ) Na razie jest wszystko OK.
Po stworzeniu nowego domu chodz? w pickupa z domem i pojawia mi si? okienko GUI, ?e dom jest na sprzeda? (jak na razie wszystko przebiega pozytywnie, a? do tej chwili).
Zatwierdzam kupno domu, a mi tu nagle wyskakuje taki tekst "Nie sta? Ci? na ten dom" pomimo, ?e mam o wiele wi?cej pieni?dzy ni? po ustawieniu wpisaniu kwoty w komendzie /nowydom ...
OnDialogResponse :
Kod: public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 5001)
{
if(!response)
return SendClientMessage(playerid, SALAMON, "Nie kupi?e? domu. ");
if(response)
{
if(GetPlayerMoney(playerid) < HouseInfo[playerid][hCost])
{
GetPlayerName(playerid, HouseInfo[playerid][hOwner], MAX_PLAYER_NAME);
MaDom[playerid] = 1;
SendClientMessage(playerid, GREEN, "Kupi?e? dom ! Gratulacje. ");
DestroyPickup(HouseInfo[playerid][hPickup]);
Delete3DTextLabel(HouseInfo[playerid][hLabel]);
new string[128];
format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_BLUE2"%s ", PlayerName(playerid));
HouseInfo[playerid][hLabel] = Create3DTextLabel(string, RED, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 7.0, 0);
HouseInfo[playerid][hPickup] = CreatePickup(1272, 23, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 0);
new INI:File = INI_Open(HousePath());
INI_WriteInt(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]);
INI_Close(File);
}
else SendClientMessage(playerid, LIGHTGREEN, "Nie sta? Ci? na ten dom ! ");
}
else SendClientMessage(playerid, LIGHTGREEN, "Ten dom ma ju? w?a?ciciela ! ");
}
return 1;
}
Dam jeszcze poboczne funkcje :
Kod: 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());
INI_WriteInt(File, "Wlasciciel", 0);
INI_WriteFloat(File, "WejscieX", X);
INI_WriteFloat(File, "WejscieY", Y);
INI_WriteFloat(File, "WejscieZ", Z);
INI_WriteFloat(File, "WyjscieX", 0);
INI_WriteFloat(File, "WyjscieY", 0);
INI_WriteFloat(File, "WyjscieZ", 0);
INI_WriteInt(File, "Interior", intek);
INI_WriteInt(File, "Cena", koszt);
INI_WriteInt(File, "Sprzedaz", sprzedaz);
INI_Close(File);
new string[128];
format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_YELLOW"Brak \n"C_BLUE2"Wartosc : "C_YELLOW"%d \n"C_BLUE2"Wartosc sprzedazy : "C_YELLOW"%d \n ", koszt, sprzedaz);
HouseInfo[playerid][hLabel] = Create3DTextLabel(string, ORANGE, X, Y, Z, 7.0, 0);
HouseInfo[playerid][hPickup] = CreatePickup(1273, 23, X, Y, Z, 0);
return 1;
}
public LoadHouse_data(playerid, name[], value[])
{
INI_Int("Wlasciciel", HouseInfo[playerid][hOwner]);
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]);
return 1;
}
stock HousePath()
{
new string[256];
format(string, sizeof string, HousePATH, houseid+1);
return string;
}
stock PlayerName(playerid)
{
new name[24];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
Wiem, ?e kod jest zrypany [/code]
Wysłany: 2012-02-11, 22:07
DamnedNigga
psajkodela
Wiek: 33 Na forum: 6484 dni Posty: 13
Piwa : 275
Kod: if(GetPlayerMoney(playerid) < HouseInfo[playerid][hCost])
Zamie? na:
Kod: if(GetPlayerMoney(playerid) >= HouseInfo[playerid][hCost])
Wysłany: 2012-02-11, 23:44
Mlody951
Wiek: 28 Na forum: 5229 dni Posty: 7
Nick w MP: Mlody
Piwa : 2
OK, niby dzia?a.
Ale mam problem.
Po kupieniu domu niszczy si? pickup oraz 3DText, a na ich miejsce nie pojawiaj? si? nowe :
Kod:
DestroyPickup(HouseInfo[playerid][hPickup]);
Delete3DTextLabel(HouseInfo[playerid][hLabel]);
new string[128];
format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_BLUE2"%s ", PlayerName(playerid));
HouseInfo[playerid][hLabel] = Create3DTextLabel(string, RED, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 7.0, 0);
HouseInfo[playerid][hPickup] = CreatePickup(1272, 23, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 0);
Oraz po kupnie domu zawarto?? pliku wygl?da tak :
Kod: Wlasciciel = 77
WejscieX = 0.000000
WejscieY = 0.000000
WejscieZ = 0.000000
WyjscieX = 0.000000
WyjscieY = 0.000000
WyjscieZ = 0.000000
Interior = 0
Cena = 0
Sprzedaz = 0
Na miejscu Wlasciciel powinna by? nazwa gracza kt?ry kupi? dom itd.
Oraz jak wpisze /nowydom par? razy to w scriptfiles jest jeden plik a powinno by? kilka ; /
Dam ca?y kod :
Kod: #include <a_samp>
#include <YSI/y_ini>
#include <zcmd>
#include <sscanf2>
#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;
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 OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == HouseInfo[playerid][hPickup])
{
if(!fexist(HousePath()))
{
INI_ParseFile(HousePath(), "LoadHouse_%d", .bExtra = true, .extra = houseid);
ShowPlayerDialog(playerid, 5000, DIALOG_STYLE_MSGBOX, "Dom", "To jest tw?j dom \nChcesz wej?? do niego? ", "Tak", "Nie");
}
else
{
ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_MSGBOX, "Dom", "Ten dom jest na sprzeda?. Chcesz go kupi?? ", "Tak", "Nie");
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 5001)
{
if(!response)
return SendClientMessage(playerid, SALAMON, "Nie kupi?e? domu. ");
if(response)
{
if(GetPlayerMoney(playerid) > HouseInfo[playerid][hCost])
{
MaDom[playerid] = 1;
SendClientMessage(playerid, GREEN, "Kupi?e? dom ! Gratulacje. ");
DestroyPickup(HouseInfo[playerid][hPickup]);
Delete3DTextLabel(HouseInfo[playerid][hLabel]);
new string[128];
format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_BLUE2"%s ", PlayerName(playerid));
HouseInfo[playerid][hLabel] = Create3DTextLabel(string, RED, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 7.0, 0);
HouseInfo[playerid][hPickup] = CreatePickup(1272, 23, HouseInfo[playerid][hEnterX], HouseInfo[playerid][hEnterY], HouseInfo[playerid][hEnterZ], 0);
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, "Nie sta? Ci? na ten dom ! ");
}
}
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());
INI_WriteString(File, "Wlasciciel", PlayerName(playerid));
INI_WriteFloat(File, "WejscieX", X);
INI_WriteFloat(File, "WejscieY", Y);
INI_WriteFloat(File, "WejscieZ", Z);
INI_WriteFloat(File, "WyjscieX", 0);
INI_WriteFloat(File, "WyjscieY", 0);
INI_WriteFloat(File, "WyjscieZ", 0);
INI_WriteInt(File, "Interior", intek);
INI_WriteInt(File, "Cena", koszt);
INI_WriteInt(File, "Sprzedaz", sprzedaz);
INI_Close(File);
new string[128];
format(string, sizeof string, ""C_BLUE2"Wlasciciel : "C_YELLOW"Brak \n"C_BLUE2"Wartosc : "C_YELLOW"%d \n"C_BLUE2"Wartosc sprzedazy : "C_YELLOW"%d \n ", koszt, sprzedaz);
HouseInfo[playerid][hLabel] = Create3DTextLabel(string, ORANGE, X, Y, Z, 7.0, 0);
HouseInfo[playerid][hPickup] = CreatePickup(1273, 23, X, Y, Z, 0);
return 1;
}
public LoadHouse_data(playerid, name[], value[])
{
INI_Int("Wlasciciel", HouseInfo[playerid][hOwner]);
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]);
return 1;
}
stock HousePath()
{
new string[256];
format(string, sizeof string, HousePATH, houseid+1);
return string;
}
stock PlayerName(playerid)
{
new name[24];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
Wiem, ?e namiesza?em, ale system dom?w pierwszy raz robi?
Tagi: system :: domów :: y_ini
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: