[FilterScript] [Aporte]Sistema de casas
#1

Hola amigos de Pawno script Hoy vengo ah traer este sistema de casas siempre pero funcionable lo primero como funciona el sistema? Por dini vamos ah ver el code del sistema

Cuando la casa esta en venta el icono esta en verde, Cuando la compras se pone en rojo.



Lo pasare por aquн ya que es mas fбcil que por Pastebin oh por otros medios
Code:
Code:
#include <a_samp> //<----------- Necesario para cargar Callbacks (NO BORRAR SIEMPRE DEJENLO EN LA PRIMERA LINEA)
#include <dini> //<------------- Necesario para guardas casas
#define M_PROPIEDADES 3 //<---- Si produce bug cambiar al numero que desйn
#define Comandosc 100  //<---- Si produce bug cambiar al numero que desйn
#define COLOR_BLANCO 0xFFFFFFFF

enum Prop {
Propietario[25],
Precioc,//Precio de la propiedad.
Interiorcasa,//Interior de la propiedad.
PVW,//Virtual World de la propiedad.
Float:CorX,Float:CorY,Float:CorZ,//Posiciуn de ENTRADA.
Comprada, //define si esta comprada
PID, //define su id de casa
Cerrada, //define si esta cerrada
Text3D:PLabel, //Texto 3D
Float:CorXi,Float:CorYi,Float:CorZi, //Cordenadas interior
}
new Float:SX,Float:SY,Float:SZ;
new PropiedadI[M_PROPIEDADES][Prop];
new CP,PE[M_PROPIEDADES];
forward CargarPropiedades();
public CargarPropiedades() {
new Archivo[70];
for(new i = 0; i < M_PROPIEDADES; i++) {
format(Archivo,sizeof(Archivo),"Propiedades/%i.ini",i);
if(!dini_Exists(Archivo)) continue; if(dini_Exists(Archivo)) {
PropiedadI[i][Precioc] = dini_Int(Archivo,"Precio");
PropiedadI[i][Interiorcasa] = dini_Int(Archivo,"Int");
PropiedadI[i][PID] = dini_Int(Archivo,"PropiedadID");
PropiedadI[i][Cerrada] = dini_Int(Archivo,"Cerrada");
PropiedadI[i][Comprada] = dini_Int(Archivo,"Comprada");
PropiedadI[i][CorX] = dini_Float(Archivo,"X");
PropiedadI[i][CorY] = dini_Float(Archivo,"Y");
PropiedadI[i][CorZ] = dini_Float(Archivo,"Z");
PropiedadI[i][CorXi] = dini_Float(Archivo,"CorXi");
PropiedadI[i][CorYi] = dini_Float(Archivo,"CorYi");
PropiedadI[i][CorZi] = dini_Float(Archivo,"CorZi");
format(PropiedadI[i][Propietario],24,"%s",dini_Get(Archivo,"Propietario"));

new String[350];
switch(PropiedadI[i][Comprada])
{
case 0:{
format(String,sizeof(String),"{F89100}[EN VENTA]{FFFFFF}\nPropiedad de{F89100} %d{FFFFFF}\n\nValor {0FDF00}$%d\n\n\n{FFFFFF} [ID:%d]",PropiedadI[i],PropiedadI[i][Precioc],PropiedadI[i][PID]);
PE[i] = CreatePickup(1273,1,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ],PropiedadI[i][PVW]);
}
case 1:{
format(String,sizeof(String),"{FFFFFF}[Propietario: {F89100}%s]\nPropiedad de {F89100}%d {FFFFFF}\n\n\n{FFFFFF} [ID:%d]",PropiedadI[i][Propietario],PropiedadI[i],PropiedadI[i][PID]);
PE[i] = CreatePickup(19522,1,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ],PropiedadI[i][PVW]);
}
}
PropiedadI[i][PLabel] = Create3DTextLabel(String,COLOR_BLANCO,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ],25.0,PropiedadI[i][PVW]);
CP ++;

}
}
return 1;
}
#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	CargarPropiedades();
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}
main() {
#else

#endif

																																																				/*																																																	*/

public OnGameModeInit()
{
	CargarPropiedades();
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
//variable de comandos
	new cmd[256];
//==============================================================================
//Comandos
	if(strcmp(cmd, "/Comprarcasa", true) == 0) {
	new String[200],Nombre[MAX_PLAYER_NAME],Archivo[150]; GetPlayerName(playerid,Nombre,sizeof(Nombre));
	for(new i = 0; i < M_PROPIEDADES; i++) {
	if(IsPlayerInRangeOfPoint(playerid,3.0,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ])) {
	if(PropiedadI[i][Comprada] == 0) {
	if(GetPlayerMoney(playerid) >= PropiedadI[i][Precioc]) {
	GivePlayerMoney(playerid,-PropiedadI[i][Precioc]);
	DestroyPickup(PE[i]);
	PE[i] = CreatePickup(1273,1,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ],PropiedadI[i][PVW]);
	format(String,sizeof(String),"{FFFFFF}[Propietario: {F89100}%s]\nPropiedad de {F89100}%d {FFFFFF}",Nombre,PropiedadI[i]);
	PropiedadI[i][Comprada] = 1;
	format(PropiedadI[i][Propietario],24,"%s",Nombre);
	format(Archivo,sizeof(Archivo),"Propiedades/%i.ini",i);
	if(dini_Exists(Archivo))
	{
	dini_Set(Archivo,"Propietario",Nombre);
	dini_IntSet(Archivo,"Comprada",1);
	}
	Update3DTextLabelText(PropiedadI[i][PLabel],COLOR_BLANCO,String);
	}
	}
	}
	}
	return 1;
	}
	if(strcmp(cmd, "/venderpropiedad", true) == 0) {
	new String[200],Archivo[150],Nombre[24];
	GetPlayerName(playerid,Nombre,sizeof(Nombre));
	for(new i = 0; i < M_PROPIEDADES; i++) {
	if(IsPlayerInRangeOfPoint(playerid,3.0,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ])) {
	if(PropiedadI[i][Comprada] == 1 && strcmp(Nombre,PropiedadI[i][Propietario]) != 0) return SendClientMessage(playerid,-1,"No eres dueсo de йsta propiedad.");
	GivePlayerMoney(playerid,PropiedadI[i][Precioc]*21/100);
	format(String,sizeof(String),"{F89100}[EN VENTA]{FFFFFF}\nPropiedad de{F89100} %d{FFFFFF}\n\nValor {0FDF00}$%d",PropiedadI[i],PropiedadI[i][Precioc]);
	PropiedadI[i][Comprada] = 0;
	format(Archivo,sizeof(Archivo),"Propiedades/%i.ini",i);
	if(dini_Exists(Archivo))
	{
	dini_Set(Archivo,"Propietario","Nadie");
	dini_IntSet(Archivo,"Comprada",0);
	}
	Update3DTextLabelText(PropiedadI[i][PLabel],COLOR_BLANCO,String);
	}
	}
	return 1;
	}
	if(strcmp(cmd, "/Entrarcasa", true) == 0) {
	new Nombre[24]; GetPlayerPos(playerid,SX,SY,SZ);
	GetPlayerName(playerid,Nombre,sizeof(Nombre));
	for(new i = 0; i < M_PROPIEDADES; i++) {
	if(IsPlayerInRangeOfPoint(playerid,3.0,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ])) {
	if(PropiedadI[i][Cerrada] == 0) {
	if(PropiedadI[i][Comprada] == 1 && strcmp(Nombre,PropiedadI[i][Propietario]) != 0) return SendClientMessage(playerid,-1,"No eres dueсo de йsta propiedad.");
	SetPlayerPos(playerid,PropiedadI[i][CorXi],PropiedadI[i][CorYi],PropiedadI[i][CorZi]); SetPlayerInterior(playerid,PropiedadI[i][Interiorcasa]);
	}
	}
	}
	return 1;
	}
	if(strcmp(cmd, "/Salircasa", true) == 0) {
	for(new i = 0; i < M_PROPIEDADES; i++) {
	if(IsPlayerInRangeOfPoint(playerid,10.0,PropiedadI[i][CorXi],PropiedadI[i][CorYi],PropiedadI[i][CorZi])) { SetPlayerInterior(playerid,0); SetPlayerPos(playerid,SX,SY,SZ); }
	else if(IsPlayerInRangeOfPoint(playerid,10.0,PropiedadI[i][CorXi],PropiedadI[i][CorYi],PropiedadI[i][CorZi])) {  SetPlayerInterior(playerid,0); SetPlayerPos(playerid,SX,SY,SZ);}
	else if(IsPlayerInRangeOfPoint(playerid,10.0,PropiedadI[i][CorXi],PropiedadI[i][CorYi],PropiedadI[i][CorZi])){ SetPlayerInterior(playerid,0);  SetPlayerPos(playerid,SX,SY,SZ);}
	}
	return 1;
	}
	if(strcmp(cmd, "/Cerrarcasa", true) == 0) {
	new Nombre[24]; GetPlayerName(playerid,Nombre,sizeof(Nombre));
	for(new i = 0; i < M_PROPIEDADES; i++) {
	if(IsPlayerInRangeOfPoint(playerid,3.0,PropiedadI[i][CorX],PropiedadI[i][CorY],PropiedadI[i][CorZ])) {
	if(PropiedadI[i][Comprada] == 1 && strcmp(Nombre,PropiedadI[i][Propietario]) != 0) return SendClientMessage(playerid,-1,"No eres dueсo de йsta propiedad.");
	if(PropiedadI[i][Cerrada] == 0) { PropiedadI[i][Cerrada] = 1; SendClientMessage(playerid,COLOR_BLANCO,"Cerraste tu propiedad.");}
	else if(PropiedadI[i][Cerrada] == 1) { PropiedadI[i][Cerrada] = 0; SendClientMessage(playerid,COLOR_BLANCO,"Abriste tu propiedad.");}
	}
	}
	return 1;
	}
	if(strcmp(cmd, "/ayudacasas", true) == 0)
	{
	new iString[10]; //<---- Si produce bug cambiar al numero que desйn (No Cambiar ah un numero alto como 500) (les saltara mensaje de maximas particulas usadas )
	strcat(iString, "{007bff}/Comprarcasa\t{FFFFFF}Para comprar una casa.\n");
    strcat(iString, "{007bff}/Cerrarcasa\t\t{FFFFFF}Para cerrar tu casa.\n");
    strcat(iString, "{007bff}/Entrarcasa\t\t{FFFFFF}Para entrar ah tu casa.\n");
    strcat(iString, "{007bff}/Salircasa\t\t{FFFFFF}Para Salir de tu casa.\n");
    strcat(iString, "{007bff}/VenderPropiedad\t\t{FFFFFF}Para vender tu propiedad.\n");
	ShowPlayerDialog(playerid,Comandosc, DIALOG_STYLE_MSGBOX, "{80FF00}Lista de Comandos casa", iString, "Aceptar", "Salir");
	PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
	return 1;
	}
	return 0;
}
Como creo una casa?

Vamos ah la carpeta scriptfiles, y hacemos una nueva carpeta ahi mismo llamada Propiedades, despuйs de a ver la creado entramos y vamos ah este link http://www.mediafire.com/file/12u0xixx4k2xtxx/0.ini lo descargamos y lo pasamos ah la carpeta propiedades en ella vendra esto
Code:
Propietario=[DUB]FlaNy (cambiar por el nick de ustedes)
Comprada=1 (si esta comprada oh no, si las quieren poner en venta pongan en 0)
Precio=5000000 (el precio cambiar lo que gusten
CorX= Cordenadas de tu casa (entrada)
CorY= Cordenadas de tu casa
CorZ= Cordenadas de tu casa
VirtualWorld=El mundo virtual en el que estara casi todo esta en el no 1 oh depende de tu sv
Int=Id del interior
Cerrada=1 (no cambiar)
CorXi= Cordenadas de interior (casa)
CorXi=Cordenadas de interior (casa)
Cori=Cordenadas de interior (casa)
PropiedadID=0 (el id de las propiedades este bloc de notas dice 0 creen los archivos del 0 al numero de casas que gusten
Todo lo que dice ahн cambiarlo de tal modo de poner sus coordenadas y sus interiores.

Los archivos delas casas son .ini

En la prуxima actualizaciуn tratare de crear un comando con IsPlayerAdmin (rcon) para crear casas desde el juego
De mi parte eso seria todo espero y les aya gustado el sistema de casas Cualquier duda publicarla en el post.С
Reply
#2

Bien, es algo bбsico pero bueno, ojalб ahora lo tomen en cuenta y lo programen tambiйn ellos mismos para crear las casas InGame.
Reply
#3

Si eso, para mi prуxima vercion lo are InGame.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)