Jump to content

[INC] Avest-X House System [OPRAVA ! NEW DOWNLOAD]


Guest QWER

Recommended Posts

  • Replies 80
  • Created
  • Last Reply

Top Posters In This Topic

Čaute, ľudia mi stále spamujú že či by som im nedal/predal Avest-ov house systém s ukladaním majiteľa. Už ma to nasralo, tak som to spravil.

 

Čo sa pridalo ?

 

- Pridalo sa ukladanie (dini = nič nehovorte (ATomas) ja viem že je to shit, ale nebudem sa namáhať zadarmo) Ukladá sa to do priečinka "Houses" (musíte ho v ScriptFiles vytvoriť manuálne)

- Pridané 3DLabelText (obsahuje číslo domu, majiteľa a keď je na predaj, cenu)

- Pridané pickupy (keď je na predaj = zelený, keď má majiteľa = modrý)

Čo sa zmenilo ?

 

- Opravené odchádzanie z domu (mohlo sa stať, že sa objavíte pri poslednom vytvorenom dome)

- Dom sa neukladá na id hráča ale na jeho meno... (tj. pri predávaní domu nekontroluje ID hráča ale meno...)

 

Download ?

 

http://pastebin.com/G6QYGhbD

 

Screeny ?

Možno neskôr dodám...

 

S pozdravom

QWER

ooo díky ;)

du sem napsat to, co sem ti sliboval do PMek :d

 

lidičky moje nová věta:

ŽERU QWER-A !!

Link to comment
Share on other sites

hele zkusil sem to a našel bug:

normálně de koupit dům s číslem 0, a ten celej funguje, ale když přijedu k domu číslo 1,2.... tak mi to nezobrazí dialog :( nevíte pls co s tim je?

 

EDIT: proč to QWER-ovi de a mě ne?

Link to comment
Share on other sites

hm... niečo si si dosral

 

na tomto som to testoval

(sú na súradniciach okolo 0,0,3)

 

#include

#include

#define MAX_HOUSES 50

//-------------------------------------|

enum HOUSE_DATA

{

Float:p_X,

Float:p_Y,

Float:p_Z,

Float:i_X,

Float:i_Y,

Float:i_Z,

iin,

Cena,

Vlastnik[MAX_PLAYER_NAME],

Dialog,

Text3D:Text,

Pickup,

Zamek

}

new HouseInfo[MAX_HOUSES][HOUSE_DATA];

new InHouse[MAX_PLAYERS] = {-1,...};

new HouseCount = -1;

//------------------------------------|

forward GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z);

forward IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius);

forward AddHouse(Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu);

//------------------------------------|

 

main()

{

print("\n----------------------------------");

print(" Blank Gamemode by your name here");

print("----------------------------------\n");

}

 

 

public OnGameModeInit()

{

// Don't use these lines if it's a filterscript

SetGameModeText("Blank Script");

AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

new x;

for(new i;i < 45;i++){

x++;

AddHouse(0+random(50), 0+random(50), 3, 0, 0, 0, 0, 0, 5+x);

}

return 1;

}

 

public AddHouse(Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu)

{

HouseCount ++;

if(HouseCount < MAX_HOUSES)

{

HouseInfo[HouseCount][p_X] = pX;

HouseInfo[HouseCount][p_Y] = pY;

HouseInfo[HouseCount][p_Z] = pZ;

 

HouseInfo[HouseCount][i_X] = iX;

HouseInfo[HouseCount][i_Y] = iY;

HouseInfo[HouseCount][i_Z] = iZ;

HouseInfo[HouseCount][iin] = ii;

 

HouseInfo[HouseCount][Cena] = Cenik;

 

HouseInfo[HouseCount][Vlastnik] = 0;

HouseInfo[HouseCount][Zamek] = 0;

 

HouseInfo[HouseCount][Dialog] = iddialogu;

new s[128];

format(s,128,"Houses/%d.txt",HouseCount);

if(!fexist(s)){

dini_Create(s);

dini_Set(s,"Owner","none");

dini_IntSet(s,"Locked",0);

}

 

new sx[100];

if(strcmp(dini_Get(s,"Owner"),"none",true) == 0){

format(HouseInfo[HouseCount][Vlastnik],MAX_PLAYER_NAME,"Nikto");

HouseInfo[HouseCount][Zamek] = 0;

HouseInfo[HouseCount][Pickup] = CreatePickup(1273,1,pX, pY, pZ);

format(sx,100,"Dom č.%d\r\nMajiteľ: Nikto\r\nCena: %d",HouseCount,Cenik);

HouseInfo[HouseCount][Text] = Create3DTextLabel(sx,0xFF0000FF,pX,pY,pZ+1,50,0);

}else{

HouseInfo[HouseCount][Pickup] = CreatePickup(1272,1,pX, pY, pZ);

format(HouseInfo[HouseCount][Vlastnik],MAX_PLAYER_NAME,"%s",dini_Get(s,"Owner"));

HouseInfo[HouseCount][Zamek] = dini_Int(s,"Locked");

 

format(sx,100,"Dom č.%d\r\nMajiteľ: %s",HouseCount,dini_Get(s,"Owner"));

HouseInfo[HouseCount][Text] = Create3DTextLabel(sx,0xFF0000FF,pX,pY,pZ+1,50,0);

}

 

 

printf("Dom %d Vytvorený",HouseCount);

}else{

print("");

}

return 1;

}

//------------------------------------|

public OnPlayerPickUpPickup(playerid, pickupid)

{

for(new h=0;h

{

if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]))

{

ShowPlayerDialog(playerid,HouseInfo[h][Dialog],DIALOG_STYLE_LIST,"Dům","Koupit\nProdat\nZamknout\nOdemknout\nInformace o domu\nVstoupit","Použít","Nic");

}

}

return 1;

}

//------------------------------------|

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

{

if(newkeys == KEY_WALK)

{

if(InHouse[playerid] != -1){

new HouseId = InHouse[playerid];

if(IsPlayerInRangeOfPoint(playerid,10,HouseInfo[HouseId][i_X],HouseInfo[HouseId][i_Y],HouseInfo[HouseId][i_Z]))

{

SetPlayerPos(playerid,HouseInfo[HouseId][p_X],HouseInfo[HouseId][p_Y],HouseInfo[HouseId][p_Z]);

SetPlayerInterior(playerid,0);

InHouse[playerid] = -1;

}

}

}

return 1;

}

//------------------------------------|

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

{

for(new h=0;h

{

if(dialogid == HouseInfo[h][Dialog])

{

if(response == 1)

{

if(listitem == 0)

{

if(GetPlayerMoney(playerid) < HouseInfo[h][Cena]) return SendClientMessage(playerid, 0xFFFFFFFF, "Máš málo peněz !");

if(!IsHouseForSale(h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům již někdo vlastní !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_Set(s,"Owner",PlayerName(playerid));

GivePlayerMoney(playerid, -HouseInfo[h][Cena]);

SendClientMessage(playerid, 0xFFFFFFFF, "Pořidil jsi si dům !");

new sx[100];

format(sx,100,"Dom č.%d\r\nMajiteľ: %s",h,dini_Get(s,"Owner"));

Update3DTextLabelText(HouseInfo[h][Text],0xFF0000FF,sx);

DestroyPickup(HouseInfo[h][Pickup]);

HouseInfo[h][Pickup] = CreatePickup(1272,1,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]);

}

else if(listitem == 1)

{

if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_Set(s,"Owner","none");

GivePlayerMoney(playerid, HouseInfo[h][Cena]/2);

SendClientMessage(playerid, 0xFFFFFFFF, "Dům prodán, byla ti vrácena cena !");

new sx[100];

format(sx,100,"Dom č.%d\r\nMajiteľ: Nikto\r\nCena: %d",h,HouseInfo[h][Cena]);

Update3DTextLabelText(HouseInfo[h][Text],0xFF0000FF,sx);

DestroyPickup(HouseInfo[h][Pickup]);

HouseInfo[h][Pickup] = CreatePickup(1273,1,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]);

}

else if(listitem == 2)

{

if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_IntSet(s,"Locked",1);

HouseInfo[h][Zamek] = 0;

SendClientMessage(playerid, 0xFFFFFFFF, "Dům zamknut !");

}

else if(listitem == 3)

{

if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");

SendClientMessage(playerid, 0xFFFFFFFF, "Dům odemknut !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_IntSet(s,"Locked",0);

HouseInfo[h][Zamek] = 1;

}

else if(listitem == 4)

{

SendClientMessage(playerid, 0xFFFFFFFF, "Informace o domu:");

if(HouseInfo[h][Zamek] == 0)

{

SendClientMessage(playerid,0xFFFFFFFF,"Zámek: Zamknutý.");

}else{

SendClientMessage(playerid,0xFFFFFFFF,"Zámek: Odemknutý.");

}

if (IsHouseForSale(h))

{

SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ano");

}else{

SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ne");

}

}

else if(listitem == 5)

{

if(HouseInfo[h][Zamek] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům je zamknut !");

SetPlayerPos(playerid, HouseInfo[h][i_X],HouseInfo[h][i_Y],HouseInfo[h][i_Z]);

SetPlayerInterior(playerid, HouseInfo[h][iin]);

InHouse[playerid] = h;

SendClientMessage(playerid, 0xFFFFFFFF, "Dům opustíš L.ALT !");

}

}

}

}

return 1;

}

//------------------------------------|

stock PlayerName(playerid){

new name[MAX_PLAYER_NAME];

GetPlayerName(playerid,name,MAX_PLAYER_NAME);

return name;

}

stock IsPlayerHouseOwner(playerid,houseid)

{

new cesta[50];

format(cesta,150,"Houses/%d.txt",houseid);

if(strcmp(PlayerName(playerid),dini_Get(cesta,"Owner"), false) == 0) return true;

return false;

}

 

stock IsHouseForSale(houseid)

{

new cesta[50];

format(cesta,150,"Houses/%d.txt",houseid);

if(strcmp("none",dini_Get(cesta,"Owner"), false) == 0) return true;

return false;

}

 

Link to comment
Share on other sites

public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new h=0;h{
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]))
{
ShowPlayerDialog(playerid,HouseInfo[h][Dialog],DIALOG_STYLE_LIST,"Dům","Koupit\nProdat\nZamknout\nOdemknout\nInformace o domu\nVstoupit","Použít","Nic");
}
}
return 1;
}

 

Nieco je zle v podmienke :d

Link to comment
Share on other sites

ale co tam je blbě?

tady to mám celý:

 

 

#include

#include

#define MAX_HOUSES 50

//-------------------------------------|

enum HOUSE_DATA

{

Float:p_X,

Float:p_Y,

Float:p_Z,

Float:i_X,

Float:i_Y,

Float:i_Z,

iin,

Cena,

Vlastnik[MAX_PLAYER_NAME],

Dialog,

Text3D:Text,

Pickup,

Zamek

}

new HouseInfo[MAX_HOUSES][HOUSE_DATA];

new InHouse[MAX_PLAYERS] = {-1,...};

new HouseCount = -1;

//------------------------------------|

forward GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z);

forward IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius);

forward AddHouse(Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu);

forward H_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);

forward H_OnPlayerPickUpPickup(playerid, pickupid);

forward H_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);

forward H_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);

//------------------------------------|

public AddHouse(Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu)

{

HouseCount ++;

if(HouseCount < MAX_HOUSES)

{

HouseInfo[HouseCount][p_X] = pX;

HouseInfo[HouseCount][p_Y] = pY;

HouseInfo[HouseCount][p_Z] = pZ;

 

HouseInfo[HouseCount][i_X] = iX;

HouseInfo[HouseCount][i_Y] = iY;

HouseInfo[HouseCount][i_Z] = iZ;

HouseInfo[HouseCount][iin] = ii;

 

HouseInfo[HouseCount][Cena] = Cenik;

 

HouseInfo[HouseCount][Vlastnik] = 0;

HouseInfo[HouseCount][Zamek] = 0;

 

HouseInfo[HouseCount][Dialog] = iddialogu;

new s[128];

format(s,128,"Houses/%d.txt",HouseCount);

if(!fexist(s)){

dini_Create(s);

dini_Set(s,"Majitel","none");

dini_IntSet(s,"Locked",0);

}

 

new sx[100];

if(strcmp(dini_Get(s,"Majitel"),"none",true) == 0){

format(HouseInfo[HouseCount][Vlastnik],MAX_PLAYER_NAME,"Nikdo");

HouseInfo[HouseCount][Zamek] = 0;

HouseInfo[HouseCount][Pickup] = CreatePickup(1273,1,pX, pY, pZ);

format(sx,100,"Dům č.%d\r\nMajitel: Nikdo\r\nCena: %d",HouseCount,Cenik);

HouseInfo[HouseCount][Text] = Create3DTextLabel(sx,0xFF0000FF,pX,pY,pZ+1,50,0);

}else{

HouseInfo[HouseCount][Pickup] = CreatePickup(1272,1,pX, pY, pZ);

format(HouseInfo[HouseCount][Vlastnik],MAX_PLAYER_NAME,"%s",dini_Get(s,"Majitel"));

HouseInfo[HouseCount][Zamek] = dini_Int(s,"Locked");

 

format(sx,100,"Dům č.%d\r\nMajitel: %s",HouseCount,dini_Get(s,"Majitel"));

HouseInfo[HouseCount][Text] = Create3DTextLabel(sx,0xFF0000FF,pX,pY,pZ+1,50,0);

}

 

 

printf("Dům %d Vytvořený",HouseCount);

}else{

print("");

}

return 1;

}

//------------------------------------|

public H_OnPlayerPickUpPickup(playerid, pickupid)

{

for(new h=0;h

{

if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]))

{

ShowPlayerDialog(playerid,HouseInfo[h][Dialog],DIALOG_STYLE_LIST,"Dům","Koupit\nProdat\nZamknout\nOdemknout\nInformace o domu\nVstoupit","Použít","Nic");

}

}

return 1;

}

//------------------------------------|

public H_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

{

if(newkeys == KEY_WALK)

{

if(InHouse[playerid] != -1){

new HouseId = InHouse[playerid];

if(IsPlayerInRangeOfPoint(playerid,10,HouseInfo[HouseId][i_X],HouseInfo[HouseId][i_Y],HouseInfo[HouseId][i_Z]))

{

SetPlayerPos(playerid,HouseInfo[HouseId][p_X],HouseInfo[HouseId][p_Y],HouseInfo[HouseId][p_Z]);

SetPlayerInterior(playerid,0);

InHouse[playerid] = -1;

}

}

}

return 1;

}

//------------------------------------|

public H_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

{

for(new h=0;h

{

if(dialogid == HouseInfo[h][Dialog])

{

if(response == 1)

{

if(listitem == 0)

{

if(GetPlayerMoney(playerid) < HouseInfo[h][Cena]) return SendClientMessage(playerid, 0xFFFFFFFF, "Máš málo peněz !");

if(!IsHouseForSale(h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům již někdo vlastní !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_Set(s,"Majitel",HousePlayerName(playerid));

GivePlayerMoney(playerid, -HouseInfo[h][Cena]);

SendClientMessage(playerid, 0xFFFFFFFF, "Pořidil jsi si dům !");

new sx[100];

format(sx,100,"Dom č.%d\r\nMajiteľ: %s",h,dini_Get(s,"Majitel"));

Update3DTextLabelText(HouseInfo[h][Text],0xFF0000FF,sx);

DestroyPickup(HouseInfo[h][Pickup]);

HouseInfo[h][Pickup] = CreatePickup(1272,1,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]);

}

else if(listitem == 1)

{

if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_Set(s,"Majitel","none");

GivePlayerMoney(playerid, HouseInfo[h][Cena]/2);

SendClientMessage(playerid, 0xFFFFFFFF, "Dům prodán, byla ti vrácena cena !");

new sx[100];

format(sx,100,"Dům č.%d\r\nMajitel: Nikdo\r\nCena: %d",h,HouseInfo[h][Cena]);

Update3DTextLabelText(HouseInfo[h][Text],0xFF0000FF,sx);

DestroyPickup(HouseInfo[h][Pickup]);

HouseInfo[h][Pickup] = CreatePickup(1273,1,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]);

}

else if(listitem == 2)

{

if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_IntSet(s,"Locked",1);

HouseInfo[h][Zamek] = 0;

SendClientMessage(playerid, 0xFFFFFFFF, "Dům zamknut !");

}

else if(listitem == 3)

{

if(!IsPlayerHouseOwner(playerid,h)) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům není tvůj !");

SendClientMessage(playerid, 0xFFFFFFFF, "Dům odemknut !");

new s[128];

format(s,128,"Houses/%d.txt",h);

dini_IntSet(s,"Locked",0);

HouseInfo[h][Zamek] = 1;

}

else if(listitem == 4)

{

SendClientMessage(playerid, 0xFFFFFFFF, "Informace o domu:");

if(HouseInfo[h][Zamek] == 0)

{

SendClientMessage(playerid,0xFFFFFFFF,"Zámek: Zamknutý.");

}else{

SendClientMessage(playerid,0xFFFFFFFF,"Zámek: Odemknutý.");

}

if (IsHouseForSale(h))

{

SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ano");

}else{

SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ne");

}

}

else if(listitem == 5)

{

if(HouseInfo[h][Zamek] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům je zamknut !");

SetPlayerPos(playerid, HouseInfo[h][i_X],HouseInfo[h][i_Y],HouseInfo[h][i_Z]);

SetPlayerInterior(playerid, HouseInfo[h][iin]);

InHouse[playerid] = h;

SendClientMessage(playerid, 0xFFFFFFFF, "Dům opustíš L.ALT !");

}

}

}

}

return 1;

}

//------------------------------------|

stock HousePlayerName(playerid){

new name[MAX_PLAYER_NAME];

GetPlayerName(playerid,name,MAX_PLAYER_NAME);

return name;

}

stock IsPlayerHouseOwner(playerid,houseid)

{

new cesta[50];

format(cesta,150,"Houses/%d.txt",houseid);

if(strcmp(HousePlayerName(playerid),dini_Get(cesta,"Majitel"), false) == 0) return true;

return false;

}

 

stock IsHouseForSale(houseid)

{

new cesta[50];

format(cesta,150,"Houses/%d.txt",houseid);

if(strcmp("none",dini_Get(cesta,"Majitel"), false) == 0) return true;

return false;

}

 

 

P.S.: ty forwardy atd. mám upravený pro svoje potřeby takže pls nemazat

a tky sem si to hodil do Češtiny :)

Link to comment
Share on other sites

omg asi si nečítal

 

Opravená malá chyba (avest-ova = pri cykle) + screeny

stiahni si to znova je tam pri cyklu HouseCount+1 (bez neho nepôjde posledný dom...) som myslel že bol Avest lepší...

Link to comment
Share on other sites

Možná jsem našel menší chybku nebo ne :d ale chci se ujistit

 

 

enum HOUSE_DATA

{

Float:p_X,

Float:p_Y,

Float:p_Z,

Float:i_X,

Float:i_Y,

Float:i_Z,

iin,

Cena,

Vlastnik[MAX_PLAYER_NAME],

Dialog,

Text3D:Text,

Pickup,

Zamek

};

 

; - nechybí tam?

Link to comment
Share on other sites

som vedel že je to INTERIOR_X atd.. ale odkial mám ja vediet interior súradnice ??

 

hm

if(strcmp("/getint",cmdtext,true)){

new a[100],Float:b[3];

GetPlayerPos(playerid,b[0],b[1],b[2]);

format(a,100,"Id tvojho interiéra je %d a pozícia %0.3f,%0.3f,%0.3f",GetPlayerInterior(playerid),b[0],b[1],b[2]);

SendClientMessage(playerid,0xFF0000FF,a);

return true;

}

 

wow... to je geniálne alebo použi /save woooow ty kokso qwer to je nápad

 

-- stř 25. kvě 2011 17:59:29 --

 

Možná jsem našel menší chybku nebo ne :d ale chci se ujistit

 

 

enum HOUSE_DATA

{

Float:p_X,

Float:p_Y,

Float:p_Z,

Float:i_X,

Float:i_Y,

Float:i_Z,

iin,

Cena,

Vlastnik[MAX_PLAYER_NAME],

Dialog,

Text3D:Text,

Pickup,

Zamek

};

 

; - nechybí tam?

nechýba... netreba tam

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...