Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2012-02-11, 21:09


Mlody951







Wiek: 28
Na forum: 5229 dni
Posty: 7
Nick w MP: Mlody

Piwa: 2

Respekt: 50

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]

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-02-11, 22:07


DamnedNigga

psajkodela






Wiek: 33
Na forum: 6484 dni
Posty: 13

Piwa: 275

Respekt: 55,5

Kod:

if(GetPlayerMoney(playerid) < HouseInfo[playerid][hCost])

Zamie? na:
Kod:

if(GetPlayerMoney(playerid) >= HouseInfo[playerid][hCost])


Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-02-11, 23:44


Mlody951







Wiek: 28
Na forum: 5229 dni
Posty: 7
Nick w MP: Mlody

Piwa: 2

Respekt: 50

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? :)

Postaw piwo autorowi tego posta
 

 
Tagi: system :: domów :: y_ini
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » [DM] System domów - Y_Ini Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku