Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Immobiliensystem (1.0)
- (c) by NeRoTeX
- Stand: 14.10.2012
- Der Verkauf dieses Werkes ist untersagt!
- */
- #include <a_samp>
- #include <dini>
- #define MAX_IMMOS 50 //Maximale Anzahl an Immobilien
- #define IMMO_RESELL 0.5 //Immobilienpreis * IMMO_RESELL = Verkaufspreis
- #define IMMO_ICON 1274
- #define IMMO_DRAW_DIS 15.0 //Darstellungsdistanz des 3DLabels
- #define IMMO_RANGE 2.0 //Maximale Distanz für GetPlayerImmo
- #define IMMO_MAX_NAME 32 //Maximale Länge des Names einer Immobilie
- #define IMMO_COLOR 0xFFD200FF //Farbe des 3DLabels
- #define IMMO_FILE "/IMMO_FILES/" //Speicherordner für Immobilien
- enum ImmoEnum
- {
- iID,
- iName[IMMO_MAX_NAME],
- iPreis,
- iOwner[MAX_PLAYER_NAME],
- Text3D:iLabel,
- iGewinn,
- Float:iXPos,
- Float:iYPos,
- Float:iZPos,
- iPickup
- };
- //Enum + Array
- new Immo[MAX_IMMOS][ImmoEnum];
- //Natives
- /*
- native CreateImmo(id,Name[],Preis,Gewinn,Float:XPos,Float:YPos,Float:ZPos);
- native DeleteImmo(id);
- native LoadImmo(id, bool:reload=false);
- native SaveImmo(id, bool:unload=false);
- native LoadAllImmos(bool:reload=false);
- native SaveAllImmos(bool:unload=false);
- native UpdateImmo(id);
- native BuyImmo(id, playerid, bool:force=false);
- native SellImmo(id, playerid=-1);
- native MoveImmo(id, Float:x, Float:y, Float:z);
- native IsImmoCreated(id);
- native IsImmoFree(id);
- native GetFreeImmoID();
- native SetImmoGewinn(id, Gewinn);
- native SetImmoPreis(id, Preis);
- native SetImmoName(id, Name[]);
- native SetImmoOwner(id, playerid);
- native GetImmoOwnerByName(id);
- native GetImmoPos(id, &Float:x, &Float:y, &Float:z);
- native GetImmoGewinn(id);
- native GetImmoPreis(id);
- native GetImmoName(id);
- native GetImmoOwner(id);
- native GetPlayerImmo(playerid);
- native IsPlayerImmoOwner(id, playerid);
- native GetPlayerImmoCount(playerid);
- */
- //Funktionen
- stock LoadAllImmos(bool:reload=false)
- {
- for(new i; i < MAX_IMMOS; i++)
- {
- if(reload==false)
- LoadImmo(i);
- if(reload==true)
- LoadImmo(i,true);
- }
- }
- stock SaveAllImmos(bool:unload=false)
- {
- for(new i; i < MAX_IMMOS; i++)
- {
- if(unload==false)
- SaveImmo(i);
- if(unload==true)
- SaveImmo(i,true);
- }
- }
- stock UpdateImmo(id)
- {
- if(Immo[id][iID] == -1)return 1;
- new string[256];
- format(string,sizeof(string),"%s\nBesitzer: %s\nPreis: $%d\nGewinn: $%d",Immo[id][iName],Immo[id][iOwner],Immo[id][iPreis],Immo[id][iGewinn]);
- Update3DTextLabelText(Immo[id][iLabel],IMMO_COLOR,string);
- printf("Immobilie %d geupdated!",id);
- return 1;
- }
- stock IsImmoFree(id)
- {
- if(Immo[id][iID] == -1)return 0;
- if(!strcmp(Immo[id][iOwner], "Niemand"))return 1;
- return 0;
- }
- stock IsImmoCreated(id)
- {
- if(Immo[id][iID] != -1)return 1;
- return 0;
- }
- stock IsPlayerImmoOwner(id, playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- if(!strcmp(Immo[id][iOwner], name))return 1;
- return 0;
- }
- stock GetPlayerImmoCount(playerid)
- {
- new val=0,name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- for(new i; i < MAX_IMMOS; i++)
- {
- if(Immo[i][iID] != -1)
- {
- if(!strcmp(Immo[i][iOwner], name))
- val++;
- }
- }
- return val;
- }
- stock GetImmoPos(id, &Float:x, &Float:y, &Float:z)
- {
- if(Immo[id][iID] == -1)return 0;
- x=Immo[id][iXPos];
- y=Immo[id][iYPos];
- z=Immo[id][iZPos];
- return 0;
- }
- stock SellImmo(id, playerid=-1)
- {
- if(Immo[id][iID] == -1)return 0;
- if(playerid != -1 && IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
- GivePlayerMoney(playerid, floatround(Immo[id][iPreis]*IMMO_RESELL));
- format(Immo[id][iOwner],MAX_PLAYER_NAME,"Niemand");
- UpdateImmo(id);
- return 0;
- }
- stock BuyImmo(id, playerid, bool:force=false)
- {
- if(Immo[id][iID] == -1)return 0;
- if(force == false && !IsImmoFree(id))return 0;
- if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid))return 0;
- if(GetPlayerMoney(playerid) < Immo[id][iPreis])return 0;
- GivePlayerMoney(playerid, -Immo[id][iPreis]);
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- format(Immo[id][iOwner],MAX_PLAYER_NAME,name);
- UpdateImmo(id);
- return 0;
- }
- stock SetImmoOwner(id, playerid)
- {
- if(Immo[id][iID] == -1)return 0;
- if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)return 0;
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- format(Immo[id][iOwner],MAX_PLAYER_NAME,name);
- UpdateImmo(id);
- }
- stock GetImmoGewinn(id)
- {
- if(Immo[id][iID] == -1)return -1;
- return Immo[id][iGewinn];
- }
- stock GetImmoPreis(id)
- {
- if(Immo[id][iID] == -1)return -1;
- return Immo[id][iPreis];
- }
- stock GetImmoName(id)
- {
- new name[IMMO_MAX_NAME];
- format(name,IMMO_MAX_NAME,Immo[id][iName]);
- return name;
- }
- stock GetImmoOwner(id)
- {
- new owner[MAX_PLAYER_NAME];
- format(owner,MAX_PLAYER_NAME,Immo[id][iOwner]);
- return owner;
- }
- stock SetImmoGewinn(id, Gewinn)
- {
- if(Immo[id][iID] == -1)return 0;
- Immo[id][iGewinn]=Gewinn;
- UpdateImmo(id);
- }
- stock SetImmoPreis(id, Preis)
- {
- if(Immo[id][iID] == -1)return 0;
- Immo[id][iPreis]=Preis;
- UpdateImmo(id);
- }
- stock SetImmoName(id, Name[])
- {
- if(Immo[id][iID] == -1)return 0;
- if(strlen(Name) == 0)return 0;
- format(Immo[id][iName],IMMO_MAX_NAME,Name);
- UpdateImmo(id);
- }
- stock MoveImmo(id, Float:x, Float:y, Float:z)
- {
- if(Immo[id][iID] == -1)return 0;
- DestroyPickup(Immo[id][iPickup]);
- Delete3DTextLabel(Immo[id][iLabel]);
- Immo[id][iXPos]=x;
- Immo[id][iYPos]=y;
- Immo[id][iZPos]=z;
- Immo[id][iPickup]=CreatePickup(IMMO_ICON, 1, Immo[id][iXPos], Immo[id][iYPos], Immo[id][iZPos]);
- new string2[256];
- format(string2,sizeof(string2),"%s\nBesitzer: %s\nPreis: $%d\nGewinn: $%d",Immo[id][iName],Immo[id][iOwner],Immo[id][iPreis],Immo[id][iGewinn]);
- Immo[id][iLabel]=Create3DTextLabel(string2, IMMO_COLOR, Immo[id][iXPos], Immo[id][iYPos], Immo[id][iZPos]+1.0, IMMO_DRAW_DIS, 0, 1);
- return 0;
- }
- stock LoadImmo(id, bool:reload=false)
- {
- if(Immo[id][iID] == -1)return 0;
- new string[32];
- format(string,sizeof(string),"%sIMMO-%d.ini",IMMO_FILE,id);
- if(dini_Exists(string))
- {
- Immo[id][iID]=id;
- format(Immo[id][iName],IMMO_MAX_NAME,dini_Get(string, "Name"));
- Immo[id][iPreis]=dini_Int(string, "Preis");
- format(Immo[id][iOwner],MAX_PLAYER_NAME,dini_Get(string, "Owner"));
- Immo[id][iGewinn]=dini_Int(string, "Gewinn");
- Immo[id][iXPos]=dini_Float(string, "XPos");
- Immo[id][iYPos]=dini_Float(string, "YPos");
- Immo[id][iZPos]=dini_Float(string, "ZPos");
- if(reload == false)
- {
- Immo[id][iPickup]=CreatePickup(IMMO_ICON, 1, Immo[id][iXPos], Immo[id][iYPos], Immo[id][iZPos]);
- new string2[256];
- format(string2,sizeof(string2),"%s\nBesitzer: %s\nPreis: $%d\nGewinn: $%d",Immo[id][iName],Immo[id][iOwner],Immo[id][iPreis],Immo[id][iGewinn]);
- Immo[id][iLabel]=Create3DTextLabel(string2, IMMO_COLOR, Immo[id][iXPos], Immo[id][iYPos], Immo[id][iZPos]+1.0, IMMO_DRAW_DIS, 0, 1);
- printf("Immobilie %d erstellt (Load)!",id);
- }
- printf("Immobilie %d geladen!",id);
- }
- else Immo[id][iID]=-1;
- return 0;
- }
- stock SaveImmo(id, bool:unload=false)
- {
- if(Immo[id][iID] == -1)return 0;
- new string[32];
- format(string,sizeof(string),"%sIMMO-%d.ini",IMMO_FILE,id);
- if(!dini_Exists(string))
- dini_Create(string);
- dini_Set(string, "Name", Immo[id][iName]);
- dini_IntSet(string, "Preis", Immo[id][iPreis]);
- dini_Set(string, "Owner", Immo[id][iOwner]);
- dini_IntSet(string, "Gewinn", Immo[id][iGewinn]);
- dini_FloatSet(string, "XPos", Immo[id][iXPos]);
- dini_FloatSet(string, "YPos", Immo[id][iYPos]);
- dini_FloatSet(string, "ZPos", Immo[id][iZPos]);
- printf("Immobilie %d gespeichert!",id);
- if(unload == true)
- DestroyPickup(Immo[id][iPickup]), Delete3DTextLabel(Immo[id][iLabel]), printf("Immobilie %d entladen (Save)!",id), Immo[id][iID]=-1;
- return 0;
- }
- stock DeleteImmo(id)
- {
- if(Immo[id][iID] == -1)return 0;
- new string[32];
- format(string,sizeof(string),"%sIMMO-%d.ini",IMMO_FILE,id);
- if(!dini_Exists(string))return 1;
- dini_Remove(string);
- DestroyPickup(Immo[id][iPickup]);
- Delete3DTextLabel(Immo[id][iLabel]);
- Immo[id][iID]=-1;
- printf("Immobilie %d entfernt!",id);
- return 0;
- }
- stock CreateImmo(id,Name[],Preis,Gewinn,Float:XPos,Float:YPos,Float:ZPos)
- {
- if(Immo[id][iID] != -1)return 0;
- new string[256];
- Immo[id][iID]=id;
- format(Immo[id][iName],IMMO_MAX_NAME,Name);
- Immo[id][iPreis]=Preis;
- Immo[id][iGewinn]=Gewinn;
- format(Immo[id][iOwner],MAX_PLAYER_NAME,"Niemand");
- Immo[id][iXPos]=XPos;
- Immo[id][iYPos]=YPos;
- Immo[id][iZPos]=ZPos;
- Immo[id][iPickup]=CreatePickup(IMMO_ICON, 1, Immo[id][iXPos], Immo[id][iYPos], Immo[id][iZPos]);
- format(string,sizeof(string),"%s\nBesitzer: %s\nPreis: $%d\nGewinn: $%d",Immo[id][iName],Immo[id][iOwner],Immo[id][iPreis],Immo[id][iGewinn]);
- Immo[id][iLabel]=Create3DTextLabel(string, IMMO_COLOR, Immo[id][iXPos], Immo[id][iYPos], Immo[id][iZPos]+1.0, IMMO_DRAW_DIS, 0, 1);
- SaveImmo(id, false);
- printf("Immobilie %d erstellt (Create)!",id);
- return 0;
- }
- stock GetFreeImmoID()
- {
- new stop=0;
- for(new i; i < MAX_IMMOS && stop == 0; i++)
- {
- if(Immo[i][iID]==-1)
- {
- stop=1;
- return i;
- }
- }
- return -1;
- }
- stock GetPlayerImmo(playerid)
- {
- new stop=0;
- for(new i; i < MAX_IMMOS && stop == 0; i++)
- {
- if(Immo[i][iID]!=-1)
- {
- if(IsPlayerInRangeOfPoint(playerid,IMMO_RANGE,Immo[i][iXPos],Immo[i][iYPos],Immo[i][iZPos]))
- {
- stop=1;
- return i;
- }
- }
- }
- return -1;
- }
- stock GetImmoOwnerByName(id)
- {
- if(Immo[id][iID] == -1)return -1;
- new stop=0;
- for(new i; i < MAX_PLAYERS && stop == 0; i++)
- {
- if(IsPlayerConnected(i) && !IsPlayerNPC(i))
- {
- if(IsPlayerImmoOwner(id, i))
- {
- stop=1;
- return i;
- }
- }
- }
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement