Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************************
- * *
- * Sistema de casas *
- * Dinamico *
- * German - Toda la onda *
- ********************************************************************************/
- /*Usar if(strcmp(NombreJugador(playerid), CasaInfo[i][cDueno], true) == 1)return SendClientMessage(playerid, COLOR_WHITE, "No eres el dueño de la casa.");
- Para saber si es el dueño de la casa a la hora de ejecutar un comando por ejemplo /cerradura*/
- #include <a_samp>
- #include <zcmd>
- #include <dini>
- #include <sscanf2>
- #include <streamer>
- #define DIR_CASAS "Casas/Casa%d.ini"
- #define MAX_CASAS 100
- #define COLOR_WHITE 0xCECECEFF
- enum INFOCS
- {
- cDueno[MAX_PLAYER_NAME],
- cIDCasa,
- Float:PosCasa[3],
- Float:PosIntCasa[3],
- cIntCasa,
- cComprada,
- cCerradura,
- };
- // News
- new Text3D:CasaLabel[MAX_CASAS], CasasActuales, DeNuevo[MAX_PLAYERS],
- CasaInfo[MAX_CASAS][INFOCS];
- public OnFilterScriptInit(){
- CargarCasas();
- return 1;
- }
- public OnFilterScriptExit(){
- GuardarCasas();
- return 1;
- }
- CMD:crearcasa(playerid, params[]){
- // New
- new string[154],Float:X,Float:Y,Float:Z,Float:A, NuevaCasa = CasasActuales+1,
- mStr[50];
- if(NuevaCasa >= MAX_CASAS) return SendClientMessage(playerid, COLOR_WHITE, "Llegaste al limite de casas, no puedes poner más!");
- format(string, sizeof(string), DIR_CASAS, NuevaCasa);
- if(dini_Exists(string))
- {
- AumentarCasa();
- format(string, sizeof(string), "La casa ID: %d ya existe, ingresa /crearcasa nuevamente.", NuevaCasa);
- SendClientMessage( playerid, COLOR_WHITE, string);
- }
- else
- {
- GetPlayerPos(playerid, X,Y,Z),GetPlayerFacingAngle(playerid, A);
- strmid(CasaInfo[NuevaCasa][cDueno], "El Estado", 0, 24, 255);
- CasaInfo[NuevaCasa][PosCasa][0] = X;
- CasaInfo[NuevaCasa][PosCasa][1] = Y;
- CasaInfo[NuevaCasa][PosCasa][2] = Z;
- CasaInfo[NuevaCasa][PosIntCasa][0] = 0;
- CasaInfo[NuevaCasa][PosIntCasa][1] = 0;
- CasaInfo[NuevaCasa][PosIntCasa][2] = 0;
- CasaInfo[NuevaCasa][cIntCasa] = 0;
- CasaInfo[NuevaCasa][cComprada] = 0;
- CasaInfo[NuevaCasa][cCerradura] = 1;//Cerrada
- dini_Create(string);
- // Archivos
- dini_IntSet(string, "cIDCasa", CasaInfo[NuevaCasa][cIDCasa]);
- for(new m = 0; m < 3; m++){
- format(mStr,sizeof(mStr), "CasaPos%d", m);
- dini_FloatSet(string,mStr, CasaInfo[NuevaCasa][PosCasa][m]);
- }
- DeNuevo[playerid] = 0;
- AumentarCasa();
- CasaInfo[NuevaCasa][cIDCasa] = CreateDynamicPickup(19134, 1, CasaInfo[NuevaCasa][PosCasa][0], CasaInfo[NuevaCasa][PosCasa][1], CasaInfo[NuevaCasa][PosCasa][2], 0, 0);
- format(string, sizeof(string), "\t {00A400}Casa EN VENTA\n{FFFFFF}ID: {00A400}%d\n{FFFFFF}¡ Utiliza el comando {00A400}/comprarcasa !", NuevaCasa);
- CasaLabel[NuevaCasa] = CreateDynamic3DTextLabel(string, COLOR_WHITE, CasaInfo[NuevaCasa][PosCasa][0], CasaInfo[NuevaCasa][PosCasa][1], CasaInfo[NuevaCasa][PosCasa][2]+0.5,10.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,0,-1,-1, 100.0);
- SendClientMessage(playerid, COLOR_WHITE, "¡Casa creada exitosamente!");
- GuardarCasas();
- }
- return 1;
- }
- CMD:casaint(playerid, params[]){
- new CasaID, string[127], Float:X,Float:Y,Float:Z;
- if(sscanf(params, "d", CasaID) )return SendClientMessage(playerid,-1,"{FFFFFF}* USA: {DEE613}/casaint");
- format(string, sizeof(string), DIR_CASAS, CasaID);
- if(!fexist(string)) return SendClientMessage(playerid, COLOR_WHITE, "No existe esa casa!");
- GetPlayerPos(playerid,X,Y,Z);
- CasaInfo[CasaID][PosIntCasa][0] = X;
- CasaInfo[CasaID][PosIntCasa][1] = Y;
- CasaInfo[CasaID][PosIntCasa][2] = Z;
- CasaInfo[CasaID][cIntCasa] = GetPlayerInterior(playerid);
- GuardarCasas();
- return 1;
- }
- CMD:borrarcasa(playerid, params[]){
- new CasaID, string[127], ArchivoASD[128];
- for(CasaID = 0; CasaID < sizeof(CasaInfo); CasaID++){
- if(IsPlayerInRangeOfPoint(playerid, 1.0, CasaInfo[CasaID][PosCasa][0], CasaInfo[CasaID][PosCasa][1], CasaInfo[CasaID][PosCasa][2])){
- format(string, sizeof(string), DIR_CASAS, CasaID);
- if(!fexist(string)) return SendClientMessage(playerid, COLOR_WHITE, "No existe ese Quiosco!");
- CasaInfo[CasaID][PosCasa][0] = 0;
- CasaInfo[CasaID][PosCasa][1] = 0;
- CasaInfo[CasaID][PosCasa][2] = 0;
- DestroyDynamicPickup(CasaInfo[CasaID][cIDCasa]);
- DestroyDynamic3DTextLabel(CasaLabel[CasaID]);
- format(string, sizeof(string), "{FFFFFF}* Has eliminado la Casa {00A400}ID: {FFFFFF}%d.", CasaID);
- SendClientMessage(playerid, COLOR_WHITE, string);
- format(ArchivoASD, sizeof(ArchivoASD), DIR_CASAS, CasaID);
- dini_Remove(ArchivoASD);
- DisminuirQuiosco();
- }
- }
- return 1;
- }
- CMD:salircasa(playerid, params[]){
- for(new i = 0; i < sizeof(CasaInfo); i++){
- if(IsPlayerInRangeOfPoint(playerid, 3.0, CasaInfo[i][PosIntCasa][0], CasaInfo[i][PosIntCasa][1], CasaInfo[i][PosIntCasa][2])){
- SetPlayerPos(playerid, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- }
- }
- return 1;
- }
- CMD:entrarcasa(playerid, params[]){
- for(new i = 0; i < sizeof(CasaInfo); i++){
- if(IsPlayerInRangeOfPoint(playerid, 3.0, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2])){
- if(CasaInfo[i][cCerradura] == 1) return SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* La puerta esta cerrada.");
- if(strcmp(NombreJugador(playerid), CasaInfo[i][cDueno], true) == 1)return SendClientMessage(playerid, COLOR_WHITE, "No eres el dueño de la casa.");
- SetPlayerPos(playerid, CasaInfo[i][PosIntCasa][0], CasaInfo[i][PosIntCasa][1], CasaInfo[i][PosIntCasa][2]);
- SetPlayerInterior(playerid, CasaInfo[i][cIntCasa]);
- SetPlayerVirtualWorld(playerid, i);
- }
- }
- return 1;
- }
- CMD:cerradura(playerid, params[]){
- for(new i = 0; i < sizeof(CasaInfo); i++){
- if(IsPlayerInRangeOfPoint(playerid, 3.0, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2])){
- if(strcmp(NombreJugador(playerid), CasaInfo[i][cDueno], true) == 1)return SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* No estas en tu casa.");
- if(CasaInfo[i][cCerradura] == 1)
- {
- CasaInfo[i][cCerradura] = 0;
- SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* La Puerta se a abierto.");
- }else if(CasaInfo[i][cCerradura] == 0){
- CasaInfo[i][cCerradura] = 1;
- SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* La Puerta se a cerrado.");
- }
- }
- }
- return 1;
- }
- CMD:comprarcasa(playerid, params[]){
- new i, string[256];
- for(i = 0; i < sizeof(CasaInfo); i++){
- if(IsPlayerInRangeOfPoint(playerid, 3.0, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2])){
- if(CasaInfo[i][cComprada] == 1) return SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* La casa no esta en venta.");
- DestroyDynamic3DTextLabel(CasaLabel[i]);
- format(string, sizeof(string), "\t {00A400}Casa comprada\n{FFFFFF}ID: {00A400}%d\n{FFFFFF}Dueño: {00A400}%s", i, NombreJugador(playerid));
- CasaLabel[i] = CreateDynamic3DTextLabel(string, COLOR_WHITE, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2]+0.5,10.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,0,-1,-1, 100.0);
- strmid(CasaInfo[i][cDueno], NombreJugador(playerid), 0, strlen(NombreJugador(playerid)), 255);
- CasaInfo[i][cComprada] = 1;
- }
- }
- return 1;
- }
- stock NombreJugador(playerid)
- {
- new NombrePJ[24];
- GetPlayerName(playerid,NombrePJ,24);
- new N[24];
- strmid(N,NombrePJ,0,strlen(NombrePJ),24);
- for(new i = 0; i < MAX_PLAYER_NAME; i++)
- {
- if (N[i] == '_') N[i] = ' ';
- }
- return N;
- }
- // ProxDetector
- stock ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
- {
- if(IsPlayerConnected(playerid))
- {
- new Float:posx, Float:posy, Float:posz;
- new Float:oldposx, Float:oldposy, Float:oldposz;
- new Float:tempposx, Float:tempposy, Float:tempposz;
- GetPlayerPos(playerid, oldposx, oldposy, oldposz);
- for(new i=0; i<MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
- {
- GetPlayerPos(i, posx, posy, posz);
- tempposx = (oldposx -posx);
- tempposy = (oldposy -posy);
- tempposz = (oldposz -posz);
- if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
- {
- SendClientMessage(i, col1, string);
- }
- else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
- {
- SendClientMessage(i, col2, string);
- }
- else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
- {
- SendClientMessage(i, col3, string);
- }
- else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
- {
- SendClientMessage(i, col4, string);
- }
- else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
- {
- SendClientMessage(i, col5, string);
- }
- }
- }
- }
- return 1;
- }
- // Stocks
- stock AumentarCasa(){
- CasasActuales++;
- return 1;
- }
- stock DisminuirQuiosco(){
- CasasActuales--;
- return 1;
- }
- stock CargarCasas(){
- new Archivo[128], string[256];
- for(new i = 0; i < MAX_CASAS; i++){
- format(Archivo, sizeof(Archivo), DIR_CASAS, i);
- if(dini_Exists(Archivo)){
- strmid(CasaInfo[i][cDueno], dini_Get(Archivo, "Dueño"), 0, strlen(dini_Get(Archivo,"Dueño")), 255);
- CasaInfo[i][cIDCasa] = dini_Int(Archivo, "cIDCasa");
- CasaInfo[i][PosCasa][0] = dini_Float(Archivo, "CasaPos0");
- CasaInfo[i][PosCasa][1] = dini_Float(Archivo, "CasaPos1");
- CasaInfo[i][PosCasa][2] = dini_Float(Archivo, "CasaPos2");
- CasaInfo[i][PosIntCasa][0] = dini_Float(Archivo, "CasaIntPos0");
- CasaInfo[i][PosIntCasa][1] = dini_Float(Archivo, "CasaIntPos1");
- CasaInfo[i][PosIntCasa][2] = dini_Float(Archivo, "CasaIntPos2");
- CasaInfo[i][cIntCasa] = dini_Int(Archivo, "IntCasa");
- CasaInfo[i][cComprada] = dini_Int(Archivo, "Comprada");
- CasaInfo[i][cCerradura] = dini_Int(Archivo, "Cerradura");
- CasaInfo[i][cIDCasa] = CreateDynamicPickup(19134, 1, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2], 0, 0);
- AumentarCasa();
- if(CasaInfo[i][cComprada] == 1){
- format(string, sizeof(string), "\t {00A400}Casa Comprada\n{FFFFFF}ID: {00A400}%d\n{FFFFFF}Dueño:{00A400} %s", i, CasaInfo[i][cDueno]);
- CasaLabel[i] = CreateDynamic3DTextLabel(string, COLOR_WHITE, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2]+0.5,10.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,0,-1,-1, 100.0);
- }else if(CasaInfo[i][cComprada] == 0){
- format(string, sizeof(string), "\t {00A400}Casa EN VENTA\n{FFFFFF}ID: {00A400}%d\n{FFFFFF}¡ Utiliza el comando {00A400}/comprarcasa !", i);
- CasaLabel[i] = CreateDynamic3DTextLabel(string, COLOR_WHITE, CasaInfo[i][PosCasa][0], CasaInfo[i][PosCasa][1], CasaInfo[i][PosCasa][2]+0.5,10.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,0,-1,-1, 100.0);
- }
- }
- }
- return 1;
- }
- stock GuardarCasa(i){
- new Archivo[128];
- format(Archivo, sizeof(Archivo), DIR_CASAS, i);
- if(dini_Exists(Archivo)){
- dini_Set(Archivo, "Dueño", CasaInfo[i][cDueno]);
- dini_IntSet(Archivo, "IDCasa", CasaInfo[i][cIDCasa]);
- dini_FloatSet(Archivo, "CasaPos0", CasaInfo[i][PosCasa][0]);
- dini_FloatSet(Archivo, "CasaPos1", CasaInfo[i][PosCasa][1]);
- dini_FloatSet(Archivo, "CasaPos2", CasaInfo[i][PosCasa][2]);
- dini_FloatSet(Archivo, "CasaIntPos0", CasaInfo[i][PosIntCasa][0]);
- dini_FloatSet(Archivo, "CasaIntPos1", CasaInfo[i][PosIntCasa][1]);
- dini_FloatSet(Archivo, "CasaIntPos2", CasaInfo[i][PosIntCasa][2]);
- dini_IntSet(Archivo, "IntCasa", CasaInfo[i][cIntCasa]);
- dini_IntSet(Archivo, "Comprada", CasaInfo[i][cComprada]);
- dini_IntSet(Archivo, "Cerradura", CasaInfo[i][cCerradura]);
- }
- return 1;
- }
- stock GuardarCasas(){
- for(new i = 0; i < MAX_CASAS; i++){
- GuardarCasa(i);
- }
- return 1;
- }
- //Gracias zume por tu sistema de Hotdogs xd
Advertisement
Add Comment
Please, Sign In to add comment