Jump to content
  • 0

pomoc HouseSystem


Neopry

Dotaz

Ahoj,

Stáhnul jsem si HouseSystem ale vůbec nevím kam mám přidat domy, buď jsem slepej nebo to tam není, no posuďte sam :d

Předem díky...

#include <a_samp>
#include <dini>
#define MAX_HOUSES 50
#define IsPlayerInRangeOfPoint
//-------------------------------------|
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,
VW,
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);
//------------------------------------|
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][VW] = 50+HouseCount;
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("<!-- Kapacita AddHouse prekrocena, dum nebyl vytvoren !-->");
}
return 1;
}
//------------------------------------|
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new h=0;h<HouseCount+1;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);
SetPlayerVirtualWorld(playerid,0);
InHouse[playerid] = -1;
}
}
}
return 1;
}
//------------------------------------|
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
for(new h=0;h<HouseCount+1;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]);
SetPlayerVirtualWorld(playerid,HouseInfo[h][VW]);
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

1 odpověd na tuto otázku

Recommended Posts

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...