Szerző Téma: Ház rendszer  (Megtekintve 1037 alkalommal)

Ház rendszer
« Dátum: 2012. december 04. - 16:03:13 »
0 Show voters
Sziasztok!
Egy tutorial alapján csináltam egy ház rendszert, azonban van vele egy két gondom. A következõ cp-et tudok lerakni ami ugyebár berak egy interiorba ahonnan mikor kijövök rossz helyre tesz mert, a kiteleportálás az csak úgy van megoldva, hogy y-hoz hozzá adok 5-t. Nos egyszer ezt szeretném kérdezni, tõletek, hogy hogyan lehet fix helyet megadni neki, mondjuk pl a cp-elé tegyen bõven.  Ezekben ha tudtok segíteni kérem hozzáértõ segítségeteket! :) Elõre is köszönöm. OFF: szerkeztettem mert a ház ár visszaadást sikerült megoldani
Kód:
 

// This is a comment
// uncomment the line below if you want to write a filterscript
#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <streamer>
#include <SII>
#if defined FILTERSCRIPT
#pragma tabsize 0
#define KEK 0x33AAFFFF
#define SKEK 0x0000FFFF
#define ZOLD 0x33AA33AA
#define VZOLD 0x08FD04FF
#define NARANCS 0xFF9900AA
#define OSSZES_HAZ 100 //max ennyi ház lehet
enum HazInfo
{
Tulaj[24], //tulajdonos nevét tároljuk egy 24-es tömbben
Tulbanvan, //megnézzük, hogy tulajdonban van-e?
Ar, //mennyibe kerül a ház
Float:XPos,
Float:YPos,
Float:ZPos, //helyzetük
VirtualWorld, //csekpontotk vw-je
Text3D:HazNev //ház elõtti kiírás
};
new hInfo[OSSZES_HAZ][HazInfo]; //hInfoval olvassuk ki az adatokat az enumból
//=====================NormálVáltozók=========================================//
new HazDarab;//Ellenõrizzük, hogy mennyi házat csináltunk
new HazBe[OSSZES_HAZ];//Belépés
new HazKi[OSSZES_HAZ];//Kilépés
new PlayerInHouseID[MAX_PLAYERS];//Ellenõrzi, hogy egy játékos milyen ház idben van.
//============================================================================//
public OnFilterScriptInit()
{
print(\"\\n**************************************\");
print(\" *Házrendszer betöltve by Just 1.0   *\");
print(\"**************************************\\n\");
return 1;
}
public OnFilterScriptExit()
{
print(\"\\n**************************************\");
print(\" *Házrendszer lelõve by Just 1.0    *\");
print(\"*************************************\\n\");
return 1;
}
#else
main()
#endif
CMD:hazletrehoz(playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,NARANCS,\"Te nem vagy admin nem használhatod ezt a parancsot.\");
new HazAr,id = HazDarab; //változó amiben a ház árát hozzuk létre
if(sscanf(params,\"i\",HazAr)) return SendClientMessage(playerid,NARANCS,\"Használat: /hazletrehoz <ára>\");//Ellenõrizzuk, hogy a player helyesen alkalmazza-e a parancsot. Az i paraméter egy szám ugy mind a d.
new Float:x, Float:y, Float:z; //létrehozzuk a játékos pozició változóját
GetPlayerPos(playerid, x,y,z); //majd bekérjük a játékos helyzetét.
hInfo[id][Ar] = HazAr; //belõjjük a ház árát a megszabott árra.
hInfo[id][Tulbanvan] = 0; //ez azt jelenti, hogy nincs a háznak tulajdonosa
hInfo[id][XPos] = x; //
hInfo[id][YPos] = y; //Tároljuk a az x,y,z poziciót a játékos poziciójával.
hInfo[id][ZPos] = z; //
hInfo[id][VirtualWorld] = GetPlayerVirtualWorld(playerid); //ház vw-je egyezik a játékos bekért vw-vel
SendClientMessage(playerid,ZOLD,\"Ház létrehozva!\"); //üzenet a sikerességrõl! :)
HazBe[id] = CreateDynamicCP(x,y,z,1.5,GetPlayerVirtualWorld(playerid));//Létrehozzuk a belépõ cp-t és tároljuk
HazKi[id] = CreateDynamicCP(443.9237,509.4609,1001.4195,1.5,GetPlayerVirtualWorld(playerid));//Létrehozzuk a belépõ cp-t és tároljuk
new file[40],feliratstring[100]; //létrehozunk két változót \"file\" és \"feliratstring\" néven
format(file,sizeof(file),\"JHaz/Hazak/%i.ini\",id); //formatáljuk a \"file\" változót a kiválasztott mappában.
INI_Open(file);//Megnyitjuk az ini fájlt SII-vel
INI_WriteInt(\"Ar\",HazAr);//Beleíratjuk az árat az árnak megfelelõ értékkel.
INI_WriteInt(\"Tulbanvan\",0);//Beállíttatjuk a tulajdonost \"senkire (0-ra)\"
INI_WriteInt(\"VirtualWorld\",GetPlayerVirtualWorld( playerid));//Beleírtajuk a virtualworld-öt a getplayervirtualworld alapján.
INI_WriteFloat(\"XPos\",x);//Beírjuk a játékos pozicióját a csekpont pozicióba.
INI_WriteFloat(\"YPos\",y);//Ugyan az
INI_WriteFloat(\"ZPos\",z);//Ugyan az
INI_WriteString(\"Tulaj\",\"Nemhasználtház\");//Tulajdonosba beírjuk hogy Nemhasználtház.
INI_Save();//Mentjük a fájlt SII-vel
INI_Close();//És bezárjuk a fájlt SII-vel
format(feliratstring,sizeof(feliratstring),\"Tulajdonos: Nincs \\nÁra: %i$\",HazAr);
hInfo[id][HazNev] = Create3DTextLabel(feliratstring,KEK,x,y,z,25.0,GetPlayerVirtualWorld(playerid));
HazDarabö+;
return 1;
}
CMD:vasarol(playerid,params[])
{
for(new i = 0; i < OSSZES_HAZ;i++)//Megvizsgáljuk az összesházat.
{
if(!IsPlayerInRangeOfPoint(playerid,8.0,hInfo[XPos],hInfo[YPos],hInfo[ZPos])) continue;//Ellenõrizzük, hogy a játékos a cp közelében van-é?
if(GetPlayerMoney(playerid) < hInfo[Ar]) return SendClientMessage(playerid,NARANCS,\"Nincs elég pénzed a házra\");//Ellenõrizzük, hogy a játékosnak, van-e pénze a házra.
if(hInfo[Tulbanvan] == 1)return SendClientMessage(playerid,NARANCS,\"Ennek a háznak már van tulajdonosa!\"); //ellenõrizzük, hogy a háznak van-e tulajdonosa.
hInfo[Tulbanvan] = 1; //Beállítjuk a tulajdonost (aki megvette a szabad házat)
new file[60],jNeve[24],string[100]; //változokat hozunk létre.
GetPlayerName(playerid,jNeve,sizeof(jNeve));//Lekérjük a játékos nevet.
format(hInfo[Tulaj],24,\"%s\",jNeve);//formatáljuk a ház tulajdonos nevét
format(file,sizeof(file),\"JHaz/Hazak/%i.ini\",i);//formázzuk a házak fájlt
INI_Open(file); //Megnyitjuk a fájlt
INI_WriteInt(\"Tulbanvan\",1); //Átállítjuk a tulajdonost 1-re vagyis igazra
INI_WriteString(\"Tulaj\",jNeve);//Beállítjuk a tulajdonos nevét
INI_Save(); //Mentjük
INI_Close(); //Majd bezárjuk
format(string,sizeof(string),\"Tulajdonbanvan: Igen \\nÁra: %i$ \\nTulajdonos neve: %s\",hInfo[Ar],jNeve);//Formatáljuk a ház nevét
Update3DTextLabelText(hInfo[HazNev],VZOLD,string);//Felül írjuk a textlabelt és átszínezzük
GivePlayerMoney(playerid,-hInfo[Ar]);
return 1;
}
SendClientMessage(playerid,NARANCS,\"Nem vagy ház közelében!\"); //vagy üzenetet küldünk arról, hogy nincs házközelben
return 1;
}
CMD:elad(playerid,params[])
{
for(new i = 0; i < OSSZES_HAZ;i++)
{
if(!IsPlayerInRangeOfPoint(playerid,8.0,hInfo[XPos],hInfo[YPos],hInfo[ZPos])) continue;
if(hInfo[Tulbanvan] == 0) return SendClientMessage(playerid,NARANCS,\"Ennek a háznak nincs tulajdonosa.\");
new jNeve[24];
GetPlayerName(playerid,jNeve,sizeof(jNeve));
if(hInfo[Tulbanvan] == 1 && strcmp(jNeve,hInfo[Tulbanvan]) == 0) return SendClientMessage(playerid,NARANCS,\"Ez nem a teházad!\");
hInfo[Tulbanvan] = 0;
new file[60],string[100];
format(hInfo[Tulaj],24,\"Nemhasználtház\");
format(file,sizeof(file),\"JHaz/Hazak/%i.ini\",i);
INI_Open(file);
INI_WriteInt(\"Tulbanvan\",0);
INI_WriteString(\"Tulaj\",\"Nemhasználtház\");
INI_Save();
INI_Close();
format(string,sizeof(string),\"Tulajdonban van: nem \\nÁra: %i$ \\nTulajdonos: nincs\",hInfo[Ar],jNeve);
Update3DTextLabelText(hInfo[HazNev],KEK,string);
return 1;
}
SendClientMessage(playerid,NARANCS,\"Nem vagy ház közelében!\");
return 1;
}
public OnPlayerEnterDynamicCP(playerid,checkpointid)
{
for(new i = 0; i < OSSZES_HAZ;i++)
{
if(checkpointid == HazBe)
{
new jNeve[24];
GetPlayerName(playerid,jNeve,24);
if(hInfo[Tulbanvan] == 1 && strcmp(hInfo[Tulbanvan],jNeve) != 0)//Összehasonlítjuk, hogy tulban van vagy sem.
   {
      SetPVarInt(playerid,\"PlayersInteriorHouse\",GetPlayerInterior(playerid));//Storing, so later we can reset it back
      SetPVarInt(playerid,\"PlayerVirtualWorldHouse\",GetPlayerVirtualWorld(playerid));//Storing, so later we can reset it back
      SetPlayerInterior(playerid,12);
      SetPlayerPos(playerid,446.7281,507.0475,1001.4195) ;
      SetPlayerVirtualWorld(playerid,hInfo[VirtualWorld]);
      PlayerInHouseID[playerid] = i;
   }
if(hInfo[Tulbanvan] == 1 && strcmp(hInfo[Tulaj],jNeve) != 0)//Ellenõrizzük, hogy ha a ház tulajdonban van de a tulajdonos neve nem ugyan az.
{
   SendClientMessage(playerid,NARANCS,\"Ez bizony nem a te házad!\");
}
if(hInfo[Tulbanvan] == 0)//Ellenõrizzük a hogy tulban van-e
{
   SendClientMessage(playerid,NARANCS,\"/vasarol, hogy megvedd a házat\");
}
}
if(checkpointid == HazKi)
{
   SetPlayerPos(playerid,hInfo[XPos],hInfo[YPos]+5,hInfo[ZPos]);//+4-at hozzá ad y,x-hez és oda tesz ki.
   SetPlayerInterior(playerid,GetPVarInt(playerid,\"PlayersInteriorHouse\"));//Setting the players interior to the one we stored
   SetPlayerVirtualWorld(playerid,GetPVarInt(playerid,\"PlayerVirtualWorldHouse\"));//Setting the players virtual world to the one we stored.
}
}
return 1;
}
stock LoadHouses()//Creating the stock function
{
new file[60],haztulaj[24];//creating the \"file\" var. And also creating the \"houseowner\" var so we can store it, when we are reading the house owner ini line.
for(new i = 0; i < OSSZES_HAZ;i++)//Looping threw every house
{
format(file,sizeof(file),\"JHaz/Hazak/%i.ini\",i);//Opening the house file with the current selected number with \"i\".
if(!INI_Exist(file)) continue;//Checking if the ini house file exist, if not to stop there.
INI_Open(file);//Opening the house ini
hInfo[Ar] = INI_ReadInt(\"Ar\");//Reading the price.
hInfo[Tulbanvan] = INI_ReadInt(\"Tulbanvan\");//Reading if it\'s owned.
hInfo[XPos] = INI_ReadInt(\"XPos\");//Reading the X float position.
hInfo[YPos] = INI_ReadInt(\"YPos\");//Reading the Y float position.
hInfo[ZPos] = INI_ReadInt(\"ZPos\");//Reading the Z float position.
hInfo[VirtualWorld] = INI_ReadInt(\"VirtualWorld\");//Reading the virtual world.
INI_ReadString(houseowner,\"Tulaj\");//Reading the house owner.
format(hInfo[Tulaj],24,\"%s\",houseowner);//Formating the \"Owner\" house id value to the red one.
HazBe = CreateDynamicCP(hInfo[XPos],hInfo[YPos],hInfo[ZPos],1.5,hInfo[VirtualWorld]);//Creating the checkpoint and storing it in the HouseEnter value.
HazKi = CreateDynamicCP(443.9237,509.4609,1001.4195,1.5,hInfo[VirtualWorld]);//Creating the house exit checkpoint and storing it in the HouseExit value.
new feliratstring[100];//Creating the labelstring var.
switch(hInfo[Tulbanvan])//Using the \"switch\" method to check if the house is owned
{
case 0:{format(labelstring,sizeof(feliratstring),\"Tulajdonban van: Nem \\nÁra: %i$\",hInfo[Ar]);}//If it isnt...
case 1:{format(labelstring,sizeof(feliratstring),\"Tulajdonban van: Igen \\nÁra: %i$ \\nTulaj: %s\",hInfo[Ar],hInfo[Tulaj]);}//If it is...
}
hInfo[HazNev] = Create3DTextLabel(feliratstring,VZOLD,hInfo[XPos],hInfo[YPos],hInfo[ZPos],25.0,hInfo[VirtualWorld]);//Creating the label with the formatted string.
HazDarabö+;//+ counting the HouseCount var.
INI_Close();//Closing the SII file.
}
return 1;
}
« Utoljára szerkesztve: 2012. december 04. - 16:07:33 írta justrics »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal