[Pedido] Preciso 'aprender a fazer um sistema de casas simples'
#1

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 ?
Reply
#2

Eu nгo entendo nada de MsyQsl :/
Reply
#3

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

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.
Reply
#5

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
Reply
#6

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

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.
Reply
#8

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

aff

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

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

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.
Reply
#12

Й 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.
Reply
#13

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 .
Reply
#14

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 ?
Reply
#15

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
Reply
#16

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.
Reply
#17

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
Reply
#18

alguem me ajuda a fazer o comando de criar casa ?
Reply
#19

O que tб dando?
Reply
#20

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 :\
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)