SA-MP Forums Archive
[Pedido] Preciso 'aprender a fazer um sistema de casas simples' - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Preciso 'aprender a fazer um sistema de casas simples' (/showthread.php?tid=526175)



Preciso 'aprender a fazer um sistema de casas simples' - Duun - 15.07.2014

Galera, alguйm por favor me ensina a fazer um sistema de casas simples ? Sу com duas casas mesmo, sу quero aprender a fazer !! Eu baixei a LHouse mais nгo conseguir entender muita coisa, preciso de um tutorial, Jб pesquisei tutoriais para criar sistemas de casas, mais sу acho em MsyQsl, e eu nгo uso MsyQsl.

Queria saber fazer !! Alguйm me ensina ?


Re: Preciso de ajuda - DogeMan - 15.07.2014

Eu nгo entendo nada de MsyQsl :/


Re: Preciso de ajuda - Duun - 15.07.2014

Alguйm faz um tutorial ai pra fazer sistema de casa sу usando zcmd, sscanf e dof2 !! ?


Re: Preciso de ajuda - Schocc - 15.07.2014

Bom colega, se vocк ficar nessa coisa de tutorial vai ficar atй o fim do mundo estudando como os 654564654354 que fazem aqui no fуrum hoje em dia.

Um bom estudo, gera um bom resultado, entгo se nгo quiser ser sу mais um "scripter" no meio, estude a linguagem Pawn e depois pense em fazer projetos/sistemas.

E sobre o MsyQsl, eu acho que vocк quer dizer MySQL, e recomendado usar se tiver conhecimento.


Re: Preciso de ajuda - Duun - 15.07.2014

Cara eu jб tenho um certo conhecimento em pawn, mais ainda nгo sei como se faz sistemas de casas ! sу queria uma base, sу isso. nem preciso de cуdigos, mais sim de uma explicaзгo


Re: Preciso de ajuda - ipsLuan - 15.07.2014

Se saber variбveis e loops acho que faz um.


Re: Preciso de ajuda - SkullFire - 16.07.2014

Quote:
Originally Posted by Duun
Посмотреть сообщение
Cara eu jб tenho um certo conhecimento em pawn, mais ainda nгo sei como se faz sistemas de casas ! sу queria uma base, sу isso. nem preciso de cуdigos, mais sim de uma explicaзгo
Estude loop e salvamentos de dados e coloque em pratica o que estudou .
Linguagem de programaзгo й igual matemбtica, sу se aprende colocando em pratica. Abraзos.


Re: Preciso 'aprender a fazer um sistema de casas simples' - ipsLuan - 16.07.2014

Estude sobre salvamento, aconselho ou DOF2 ou bCini. Apуs isso estude sobre loops.


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

aff

ninguem me ajuda sу fica mandando estudar. estudar eu jб to estudando, n quer ajudar n comenta nada


Re: Preciso 'aprender a fazer um sistema de casas simples' - ipsLuan - 16.07.2014

Amigo, tu acha que pode ter tudo na mгo? Ande com suas prуpias pernas.


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

Tф achando que vocкs nгo sabem й de nada, sу ficam dando sermхes em vez de ajudar quem precisa, toda vez que eu posso ajudar alguem aqui no forum eu ajudo. e n fico dando sermгo em ninguem.


Re: Preciso 'aprender a fazer um sistema de casas simples' - MultiKill - 16.07.2014

Й sу estudar loops, variбveis e operadores.

Vocк quer criar um arquivo, e o nome dele vai ter um nъmero exemplo: Exemplo0.ini.
E caso o arquivo Exemplo0.ini exista, crie um arquivo com o prуximo nъmero, que seria o 1.
Para este caso vocк iria sу precisar de uma variбvel, e um sistema de salvamento.

Vocк iria cria a variбvel.
Formatar para fazer verificar se o arquivo existe.
Exemplo:
pawn Code:
format(arquivo, sizeof arquivo,"Exemplo%d.ini",0);
E iria fazer verificar se o arquivo existe.
E caso ele exista retornar acrescentando a variбvel mais um nъmero, para isso teria que usar o operador ++.
E faзa criar o arquivo.
E depois acrescentar mais um valor a variбvel.


Re: Preciso 'aprender a fazer um sistema de casas simples' - dPlaYer_ - 16.07.2014

Daqui a pouco eu dou edit aqui de uma base q eu e um colega fizemos anos atrбs.

divirta-se.

pawn Code:
#include <a_samp>
#include <DOF2>
#include <zcmd>
#include <sscanf>
#include <streamer>

#define MAX_CASAS 200
#define PASTA_CASA "Casas/%d.ini"

#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_RED 0xFF0000AA
#define COLOR_GREEN 0x00FF00AA

enum hInfo
{
    Float:hEnterX,
    Float:hEnterY,
    Float:hEnterZ,
    Float:hExitX,
    Float:hExitY,
    Float:hExitZ,
    hIntDentro,
    hVWDentro,
    hIntFora,
    hVWFora,
    bool:hTemDono,
    hDonoCasa[MAX_PLAYER_NAME],
    hPrecoCasa,
    hPickup,
    hIconeC,
    hVehModelo,
    Float:hVecX,
    Float:hVecY,
    Float:hVecZ,
    Float:hVecA
};

new hCasaInfo[MAX_CASAS][hInfo];
new hCasaCarro[MAX_CASAS];

public OnFilterScriptInit()
{
    SetTimer("AtaulizarStatusCasa", 1000, true);
    return 1;
}

public OnFilterScriptExit()
{
    DOF2_Exit();
    return 1;
}

CMD:comprarcasa(playerid)
{
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new i = 0; i < MAX_CASAS; i++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.5, hCasaInfo[i][hEnterX], hCasaInfo[i][hEnterY], hCasaInfo[i][hEnterZ]) && GetPlayerInterior(playerid) == hCasaInfo[i][hIntFora] && GetPlayerVirtualWorld(playerid) == hCasaInfo[i][hVWFora]) //Is player near house entrance, and if player is in interior of that house + virtual world (Last time I said this too!)
        {
            if(hCasaInfo[i][hTemDono]) return SendClientMessage(playerid, COLOR_RED, "( Info ) Esta casa jб possui um propietбrio.");
            if(GetPlayerMoney(playerid) < hCasaInfo[i][hPrecoCasa]) return SendClientMessage(playerid, COLOR_RED, "( Info ) Vocк nгo tem dinheiro suficiente para comprar esta casa.");
            hCasaInfo[i][hTemDono] = true;
            strmid(hCasaInfo[i][hDonoCasa], pName, 0, false, strlen(pName));
            GivePlayerMoney(playerid, -hCasaInfo[i][hPrecoCasa]);
            SendClientMessage(playerid, COLOR_GREEN, "( Info ) Esta casa agora pertence a vocк.");
            SalvarCasa(i);
            AtualizarCasas(i, true);
            DOF2_SaveFile();
            return 1;
        }
    }
    return 1;
}

CMD:vendercasa(playerid)
{
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new i = 0; i < MAX_CASAS; i++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.5, hCasaInfo[i][hEnterX], hCasaInfo[i][hEnterY], hCasaInfo[i][hEnterZ]) && GetPlayerInterior(playerid) == hCasaInfo[i][hIntFora] && GetPlayerVirtualWorld(playerid) == hCasaInfo[i][hVWFora])
        {
            if(!strcmp(hCasaInfo[i][hDonoCasa], pName, false))
            {
                strmid(hCasaInfo[i][hDonoCasa], "SemDono", 0, false, 8);
                hCasaInfo[i][hTemDono] = false;
                GivePlayerMoney(playerid, hCasaInfo[i][hPrecoCasa] / 2);
                SendClientMessage(playerid, COLOR_GREEN, "( Info ) Casa vendida com sucesso!");
                SalvarCasa(i);
                AtualizarCasas(i, true);
                DOF2_SaveFile();
                return 1;
            }
        }
    }
    return 1;
}

stock CarregarCasa(casaid)
{
    new fstring[10];
    format(fstring, 10, PASTA_CASA, casaid);
    if(!DOF2_FileExists(fstring)) return 0;
    hCasaInfo[casaid][hEnterX] = DOF2_GetFloat(fstring, "EntradaX");
    hCasaInfo[casaid][hEnterY] = DOF2_GetFloat(fstring, "EntradaY");
    hCasaInfo[casaid][hEnterZ] = DOF2_GetFloat(fstring, "EntradaZ");
    hCasaInfo[casaid][hExitX] = DOF2_GetFloat(fstring, "SaidaX");
    hCasaInfo[casaid][hExitY] = DOF2_GetFloat(fstring, "SaidaY");
    hCasaInfo[casaid][hExitZ] = DOF2_GetFloat(fstring, "SaidaZ");
    hCasaInfo[casaid][hIntDentro] = DOF2_GetInt(fstring, "InteriorDentro");
    hCasaInfo[casaid][hVWDentro] = DOF2_GetInt(fstring, "InteriorDentro2");
    hCasaInfo[casaid][hIntFora] = DOF2_GetInt(fstring, "InteirorForar");
    hCasaInfo[casaid][hVWFora] = DOF2_GetInt(fstring, "InteriorFora2");
    hCasaInfo[casaid][hTemDono] = DOF2_GetBool(fstring, "TemDono") ? true : false;
    strmid(hCasaInfo[casaid][hDonoCasa], DOF2_GetString(fstring, "Propietario"), 0, false, strlen(DOF2_GetString("Propietario")));
    hCasaInfo[casaid][hPrecoCasa] = DOF2_GetInt(fstring, "ValorCasa");
    hCasaInfo[casaid][hVehModelo] = DOF2_GetInt(fstring, "VeiculoModelo");
    hCasaInfo[casaid][hVecX] = DOF2_GetFloat(fstring, "HV_PosX");
    hCasaInfo[casaid][hVecY] = DOF2_GetFloat(fstring, "HV_PosZ");
    hCasaInfo[casaid][hVecZ] = DOF2_GetFloat(fstring, "HV_PosZ");
    hCasaInfo[casaid][hVecA] = DOF2_GetFloat(fstring, "HV_PosA");
    DOF2_SaveFile();
    return 1;
}

stock AtualizarCasas(casaid, bool:reload = false)
{
    if(reload)
    {
        DestroyDynamicMapIcon(hCasaInfo[casaid][hIconeC]);
        DestroyDynamicPickup(hCasaInfo[casaid][hPickup]);
        DestroyVehicle(hCasaCarro[casaid]);
    }
    if(!hCasaInfo[casaid][hTemDono])
    {
        hCasaInfo[casaid][hIconeC] = CreateDynamicMapIcon(hCasaInfo[casaid][hEnterX], hCasaInfo[casaid][hEnterY], hCasaInfo[casaid][hEnterZ], 31, 0, hCasaInfo[casaid][hVWFora], hCasaInfo[casaid][hIntFora]);
        hCasaInfo[casaid][hPickup] = CreateDynamicPickup(1273, 1, hCasaInfo[casaid][hEnterX], hCasaInfo[casaid][hEnterY], hCasaInfo[casaid][hEnterZ], hCasaInfo[casaid][hVWFora], hCasaInfo[casaid][hIntFora]);
    }
    else
    {
        hCasaInfo[casaid][hIconeC] = CreateDynamicMapIcon(hCasaInfo[casaid][hEnterX], hCasaInfo[casaid][hEnterY], hCasaInfo[casaid][hEnterZ], 31, 0, hCasaInfo[casaid][hVWFora], hCasaInfo[casaid][hIntFora]);
        hCasaInfo[casaid][hPickup] = CreateDynamicPickup(1273, 1, hCasaInfo[casaid][hEnterX], hCasaInfo[casaid][hEnterY], hCasaInfo[casaid][hEnterZ], hCasaInfo[casaid][hVWFora], hCasaInfo[casaid][hIntFora]);
    }
    if(IsValidVehicleModel(hCasaInfo[casaid][hVehModelo]))
        hCasaCarro[casaid] = CreateVehicle(hCasaInfo[casaid][hVehModelo], hCasaInfo[casaid][hVecX], hCasaInfo[casaid][hVecY], hCasaInfo[casaid][hVecZ], hCasaInfo[casaid][hVecA], -1, -1, -1);
    return 0;
}

stock IsValidVehicleModel(vehiclemodel)
{
    if(vehiclemodel >= 400 && vehiclemodel <= 611)
        return true;
    return false;
}

stock SalvarCasa(casaid)
{
    new fstring[10];
    format(fstring, 10, PASTA_CASA, casaid);
    DOF2_SetFloat(fstring, "EntradaX", hCasaInfo[casaid][hEnterX]);
    DOF2_SetFloat(fstring, "EntradaY", hCasaInfo[casaid][hEnterY]);
    DOF2_SetFloat(fstring, "EntradaZ", hCasaInfo[casaid][hEnterZ]);
    DOF2_SetFloat(fstring, "SaidaX", hCasaInfo[casaid][hExitX]);
    DOF2_SetFloat(fstring, "SaidaY", hCasaInfo[casaid][hExitY]);
    DOF2_SetFloat(fstring, "SaidaZ", hCasaInfo[casaid][hExitZ]);
    DOF2_SetInt(fstring, "InteriorDentro", hCasaInfo[casaid][hIntDentro]);
    DOF2_SetInt(fstring, "InteriorDentro2", hCasaInfo[casaid][hVWDentro]);
    DOF2_SetInt(fstring, "InteriorFora", hCasaInfo[casaid][hIntFora]);
    DOF2_SetInt(fstring, "InteriorFora2", hCasaInfo[casaid][hVWFora]);
    DOF2_SetBool(fstring, "TemDono", hCasaInfo[casaid][hTemDono]);
    DOF2_SetInt(fstring, "Propietario", hCasaInfo[casaid][hDonoCasa]);
    DOF2_SetInt(fstring, "ValorCasa", hCasaInfo[casaid][hPrecoCasa]);
    DOF2_SetInt(fstring, "VeiculoModelo", hCasaInfo[casaid][hVehModelo]);
    DOF2_SetFloat(fstring, "HV_PosX", hCasaInfo[casaid][hVecX]);
    DOF2_SetFloat(fstring, "HV_PosY", hCasaInfo[casaid][hVecY]);
    DOF2_SetFloat(fstring, "HV_PosZ", hCasaInfo[casaid][hVecZ]);
    DOF2_SetFloat(fstring, "HV_PosA", hCasaInfo[casaid][hVecA]);
    DOF2_SaveFile();
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & 16 && !IsPlayerInAnyVehicle(playerid))
    {
        for(new i = 0; i < MAX_CASAS; i++)
        {
            if(IsPlayerInRangeOfPoint(playerid, 1.5, hCasaInfo[i][hEnterX], hCasaInfo[i][hEnterY], hCasaInfo[i][hEnterZ]) && GetPlayerInterior(playerid) == hCasaInfo[i][hIntFora] && GetPlayerVirtualWorld(playerid) == hCasaInfo[i][hVWFora])
            {
                SetPlayerPos(playerid, hCasaInfo[i][hExitX], hCasaInfo[i][hExitY], hCasaInfo[i][hExitZ]);
                SetPlayerInterior(playerid, hCasaInfo[i][hIntDentro]);
                SetPlayerVirtualWorld(playerid, hCasaInfo[i][hVWDentro]);
            }
            else if(IsPlayerInRangeOfPoint(playerid, 1.5, hCasaInfo[i][hExitX], hCasaInfo[i][hExitY], hCasaInfo[i][hExitZ]) && GetPlayerInterior(playerid) == hCasaInfo[i][hIntDentro] && GetPlayerVirtualWorld(playerid) == hCasaInfo[i][hVWDentro])
            {
                SetPlayerPos(playerid, hCasaInfo[i][hEnterX], hCasaInfo[i][hEnterY], hCasaInfo[i][hEnterZ]);
                SetPlayerInterior(playerid, hCasaInfo[i][hIntFora]);
                SetPlayerVirtualWorld(playerid, hCasaInfo[i][hVWFora]);
            }
        }
    }
    return 1;
}

forward AtaulizarStatusCasa();
public AtaulizarStatusCasa()
{
    new str[100];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        for(new j = 0; j < MAX_CASAS; j++)
        {
            //if(IsPlayerInRangeOfPoint(j, hCasaInfo[j][hEnterX], hCasaInfo[j][hEnterY], hCasaInfo[j][hEnterZ]) && GetPlayerInterior(i) == hCasaInfo[j][hIntFora] && GetPlayerVirtualWorld(i) == hCasaInfo[j][hVWFora])
            if(IsPlayerInRangeOfPoint(j, 1.5, hCasaInfo[j][hEnterX], hCasaInfo[j][hEnterY], hCasaInfo[j][hEnterZ]) && GetPlayerInterior(i) == hCasaInfo[j][hIntFora] && GetPlayerVirtualWorld(i) == hCasaInfo[j][hVWFora])
            {
                if(hCasaInfo[j][hTemDono])
                    format(str, 100, "~w~Propietario ~w~: ~r~%s", hCasaInfo[j][hDonoCasa]);
                else
                    format(str, 100, "~w~Casa a venda ~n~ Preco: ~g~$%d,-", hCasaInfo[j][hPrecoCasa]);
                GameTextForPlayer(i, str, 2000, 3);
            }
         }
    }
    return 1;
}
PS: nгo sei se tб funcionando testa ai .


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

Putz d_Player, valeu mano ! Eu nгo queria o cуdigo pronto, mais isso ai vai me ajudar muito a estudar e criar meu sistema !!

Eu nгo sabia fazer um sistema de administraзгo, dai eu estudei o LLAdmin e aprendi, e fiz o meu prуprio !! Tomara que essa base ensine a fazer as casas mesmo manoo vlw !!


Sу uma dъvida, a include streamer tem qual funзгo ? e onde acho ela ?


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

Agora to tentando fazer um comando para criar uma casa baseado no cуdigo mais ta difнcil. vou pro colйgio quando eu chegar vou estudar esse script ai pra tentar aprender


Re: Preciso 'aprender a fazer um sistema de casas simples' - dPlaYer_ - 16.07.2014

No cуdigo ai que te passei ela ta sendo usada para criar

Pickup e o MapIcon.

pawn Code:
CreateDynamicMapIcon
CreateDynamicPickup
Serve tb para objetos.. entre outras coisas...

Aqui: https://sampforum.blast.hk/showthread.php?tid=102865

#

Criar casas й facil, depois se tiver tempo faзo um comando ae.


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

Tava tentando fazer o comando de criar as casas mais to tendo dificuldade, pq tenho que estudar o cуdigo primeiro.

Tava imaginando assim :

pawn Code:
command(criarcasa, playerid, params[])
{
    if(sscanf(params,"iii", interior, price, car)) return SendClientMessage(playerid,-1, "/criarcasa interior, preзo, carro");

    new Float:Pos[3];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    CreatePickup(1273, 1,   Pos[0], Pos[1], Pos[2], 0);
   
    hCasaInfo[casaid][hVehModelo] = car;
    hCasaInfo[casaid][hPrecoCasa] = price;
   
    hCasaInfo[casaid][hEnterX] = Pos[0];
    hCasaInfo[casaid][hEnterY] = Pos[1];
    hCasaInfo[casaid][hEnterZ] = Pos[2];

    return 1;
}
ainda to pensando pra criar o comando de criar a casa e salvar a mesma


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

alguem me ajuda a fazer o comando de criar casa ?


Re: Preciso 'aprender a fazer um sistema de casas simples' - ipsLuan - 16.07.2014

O que tб dando?


Re: Preciso 'aprender a fazer um sistema de casas simples' - Duun - 16.07.2014

galera to tentando criar o comando pra criar a casa a partir do cуdigo do d_player mais n to conseguindo, alguem da uma forзa ai !!

pawn Code:
command(criarcasa, playerid, params[])
{
    if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo й um admin");
   
    new Float: Pos[3];  GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    new A, B;   A = GetPlayerInterior(playerid);    B = GetPlayerVirtualWorld(playerid);
    new id, Int, car, price;    new Str[120];

    if (sscanf(params, "iiii", id, Int, car, price)) return SendClientMessage(playerid, -1, "/criarcasa id, interior, carro, preзo");

    hCasaInfo[id][hPrecoCasa] = price;
    hCasaInfo[id][hEnterX] = Pos[0];
    hCasaInfo[id][hEnterY] = Pos[1];
    hCasaInfo[id][hEnterZ] = Pos[2];
    hCasaInfo[id][hIntFora] = A;
    hCasaInfo[id][hVWFora] = B;
    hCasaInfo[id][hIntDentro] = Int;
    hCasaInfo[id][hVehModelo] = car;

    hCasaInfo[id][hTemDono] = false;

    format(Str, sizeof(Str),
    "Vocк criou a casa de id %d. Interior: %d Carro: %d, Preзo: %d", id, Int, car, price);

    SendClientMessage(playerid, -1, Str);
    SalvarCasa(id);
    DOF2_SaveFile();

    for(new i = 0; i < MAX_CASAS; i++)
    {
        AtualizarCasas(i, true);
    }
    return 1;
}
e tambйm n ta salvando nada na pasta casas :\