SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

2 participantes

    Criando casas para vender no SA-MP ( pelo gm )

    Alvaro
    Alvaro
    SS - Membro de honra
    SS - Membro de honra


    Mensagens : 115
    Moedas : 4771
    Data de inscrição : 02/11/2011
    Idade : 25

    Criando casas para vender no SA-MP ( pelo gm ) Empty Criando casas para vender no SA-MP ( pelo gm )

    Mensagem por Alvaro Sáb 26 Nov 2011 - 11:42

    Introduçao

    ->Este tutorial você precisa saber o basico do ZCMD se eu fizesse
    isso com apenas strcmp em OnPlayerCommandText as pessoas teriam
    problemas.
    ->Tambem é utilizado a include streamer(Basta procurar essa include no forum).

    Começando

    Em primeiro lugar temos que colocar a include samp,include streamer a ZCMD e criar nossas variaveis.
    Devemos ter uma variável para armazenar o banco de dados, o resultado do
    banco de dados ea string de formato para a nossa consulta. DB tag está
    conectado ao banco de dados ea variável DBResult está ligado ao
    resultado da consulta.
    Spoiler:
    Abaixo estão algumas define que estamos usando para que possamos
    editá-los facilmente qualquer hora que queremos. Temos a definir
    MAX_HOUSES que é usado para criar a variável houseinformation. É bom
    estar esperto da quantidade de casas que você usa, porque o MAX_HOUSES
    quanto menor, menor é a variável eo tamanho do AMX.
    MAX_HOUSES_PER_PLAYER é usado posteriormente em nosso script para
    definir o numero de casas que um jogador pode ter.
    Spoiler:
    Precisamos criar agora nossas enum e as informaçoes das variaveis..
    Spoiler:
    A primeira coisa é em primeiro lugar, precisamos ter as duas linhas
    seguintes sob OnGameModeInit ou sob OnFilterScriptInit. Precisamos em
    primeiro lugar utilizar a função db_open para conectar nosso servidor
    samp com o banco de dados SQLite. Nós usamos a variável do banco de
    dados acima para salvar o nosso número de banco de dados nele. Em
    segundo lugar, precisamos fazer a nossa tabela se ela não existe. Você
    não precisa manter essa linha no sistema porque ele só precisa ser
    chamado uma vez. A função db_query nos permite GET / STORE / SET
    informações no nosso banco de dados. Neste caso, estamos criando nossa
    mesa. A tabela nos permite armazenar informações e pode ser usado para
    adicionar mais funções, como vamos dizer que um carro da casa. Para este
    tutorial, estamos apenas usando-a para armazenar o nome de
    proprietários.
    Spoiler:

    Agora vamos fazer o trabalho básico de redefinir as variáveis ​​para -1 (Nenhum ID de casa está sob esta variável).


    Code:

    public OnPlayerConnect(playerid)
    {
    InHouse[playerid] = -1;
    InHouseCP[playerid] = -1;
    return 1;
    }

    Agora vamos começar a parte mais dificil! Nós vamos fazer a nossa
    função que cria as nossas casas. Ele também irá consultar nosso banco
    de dados para ver se há alguém que é dono da casa. Nós estaremos usando
    uma função de ações que cria uma única linha que podemos usar para
    armazenar todas as informações de uma vez. O formato de nossas ações é


    Code:

    CreateHouse(HouseName[], CostP, Float:EnterX, Float:EnterY, Float:EnterZ, Float:TeleX, Float:TeleY, Float:TeleZ, SellP, Interiorx)


    Code:

    HouseName[] - O nome que voce quer dar para a casa (EX:Mansao1)
    CostP - O preço que você quer dar para a casa (Ex: 500000)
    Float:EnterX - O ponto de entrada da casa X (Ex: 1264.53433)
    Float:EnterY - O ponto de entrada da casa Y (Ex: 2625.6436)
    Float:EnterZ - O ponto de entrada da casa Z(Ex: 200.532)
    Float:TeleX - O teleporte X,tele para o interior (Ex: 432.4234)
    Float:TeleY - O teleporte Y,tele para o interior(Ex: 4216.4152)
    Float:TeleZ - O teleporte Z,tele para o interior(Ex: 10.53672)
    SellP - O preço de quando o dono vender a casa (Ex: 200000)
    Interiorx - O id do interior que vamos se teleportar

    Quando ele consulta o banco de dados na parte inferior, o que
    estamos fazendo é encontrar se a casa tem um proprietário, se assim ele
    vai armazenar o nome de proprietários na variável houseinformation. Se
    não houver nenhum proprietário para a casa, a variável será deixado em
    branco. Fazemos isso usando
    a instrução SELECT.


    Code:

    SELECT [VARIABLE] FROM [TABLENAME] WHERE [ANOTHER VARIABLE] = [A VALUE]
    VARIABLE = Dono da casa
    TABLENAME = HOUSEINFO
    ANOTHER VARIABLE = housename
    A VALUE = our house name.

    Em seguida, usamos db_num_rows para verificar se houve alguma
    linha com o nosso nome da casa que temos buscado. Se não houver nenhuma
    linha com o nome da casa (sem dono), então vamos apenas liberar o
    resultado com db_free_result. Se há uma linha, vamos buscar esse valor
    usando db_get_field_assoc. Para mais informações sobre SQLite, visite http://wiki.sa-mp.com/wiki/SQLite

    Nós também temos que adicionar o nosso entrar e sair checkpoints em
    nosso script usando CreateDynamicCP. Ele cria os postos de controle e
    armazena o IDS em checkpointid [0] para o CP entrar e checkpointid [1]
    para a CP saída. Também vamos fazer a nossa variável texto com
    informações 3D CreateDynamic3DTextLabel e armazená-lo no textid
    variável.



    Code:

    stock CreateHouse(HouseName[], CostP, Float:EnterX, Float:EnterY, Float:EnterZ, Float:TeleX, Float:TeleY, Float:TeleZ, Interiorx, SellP)
    {
    format(HouseInformation[houseid][Hname], 100, "%s", HouseName);
    HouseInformation[houseid][costprice] = CostP;
    HouseInformation[houseid][EnterPos][0] = EnterX;
    HouseInformation[houseid][EnterPos][1] = EnterY;
    HouseInformation[houseid][EnterPos][2] = EnterZ;
    HouseInformation[houseid][TelePos][0] = TeleX;
    HouseInformation[houseid][TelePos][1] = TeleY;
    HouseInformation[houseid][TelePos][2] = TeleZ;
    HouseInformation[houseid][sellprice] = SellP;
    HouseInformation[houseid][interiors] = Interiorx;
    format(fquery, sizeof(fquery), "SELECT donodacasa informaçoes nome dacasa = '%s'", HouseName);
    queryresult = db_query(database, fquery);
    if(db_num_rows(queryresult) != 0) db_get_field_assoc(queryresult, "dono da casa", HouseInformation[houseid][owner], 24);
    HouseInformation[houseid][checkpointidx][0] = CreateDynamicCP(EnterX, EnterY, EnterZ, 1.0);
    //CreateDynamicCP(Float:x, Float:y, Float:z, Float:size);
    HouseInformation[houseid][checkpointidx][1] = CreateDynamicCP(TeleX, TeleY, TeleZ, 1.0, 15500000+houseid, Interiorx);
    //CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid, interiorid);
    if(!HouseInformation[houseid][owner][0]) format(fquery, sizeof(fquery), "House Name: %s \n House Price:$%d \n Sell Price: $%d", HouseName, CostP, SellP);
    else if(HouseInformation[houseid][owner][0] != 0) format(fquery, sizeof(fquery), "House Name: %s \n Owner: %s", HouseName, HouseInformation[houseid][owner]);
    HouseInformation[houseid][textid] = CreateDynamic3DTextLabel(fquery, 0xFFFFFF, EnterX, EnterY, EnterZ + 0.5, 50.0);
    //CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
    houseid ++;
    return 1;
    }

    Agora vamos fazer o nosso pequenas funções que serão utilizados
    mais tarde. Eles são para definir e excluir o proprietário de uma certa
    casa. Estamos usando duas consultas SQL básico. Uma inserção ser


    Code:

    INSERT INTO [TABLENAME] ([FIELD1], [FIELD2]) VALUES ([VALUE1], [VALUE2])
    TABLENAME - HOUSEINFO
    FIELD1 - housename
    FIELD2 - houseowner
    VALUE1 - Our housename value
    VALUE2 - Our houseowner value

    E o outro sendo APAGAR


    Code:

    DELETE FROM [TABLENAME] WHERE [FIELD] = [VALUE]
    TABLENAME - HOUSEINFO
    FIELD - housename
    VALUE - the housename

    ------------------------------**-------------------------------------------------


    Code:

    stock SetOwner(HouseName[], ownername[], houseids)
    {
    format(fquery, sizeof(fquery), "INSERT INTO `HOUSEINFO` (`housename`, `houseowner`) VALUES('%s', '%s')", HouseName, ownername);
    db_query(database, fquery); //SQLITE
    format(HouseInformation[houseids][owner], 24, "%s", ownername);
    format(fquery, sizeof(fquery), "House Name: %s \n Owner: %s", HouseName, HouseInformation[houseids][owner]);
    UpdateDynamic3DTextLabelText(HouseInformation[houseids][textid], 0xFFFFFF, fquery); //Text label.
    return 1;
    }

    stock DeleteOwner(HouseName[], houseids)
    {
    format(HouseInformation[houseids][owner], 24, "%s", "\0");
    format(fquery, sizeof(fquery), "DELETE FROM `HOUSEINFO` WHERE `housename` = '%s'", HouseName);
    db_query(database, fquery); //SQLITE.
    format(fquery, sizeof(fquery), "House Name: %s \n House Price:$%d \n Sell Price: $%d", HouseName, HouseInformation[houseids][costprice], HouseInformation[houseids][sellprice]);
    UpdateDynamic3DTextLabelText(HouseInformation[houseids][textid], 0xFFFFFF, fquery); //Text Label.
    return 1;
    }

    Antes de fazermos os comandos /comprar e /vender vamos usar o
    callback OnPlayerEnterDynamicCheckpoint para definir a posição dos
    jogadores dentro ou fora da casa. Fazemos um loop chamando cada variável
    checkpoint único em nossas casas atual para ver se o ponto de
    verificação é um dos checkpoints nossa casa.


    Nós, em primeiro lugar verificamos se o jogador é o proprietário para que ele possa imediatamente entrar na casa.
    Se assim for, vamos teleportar ele para dentro da casa.

    Em seguida ele verifica se o jogar é o proprietario se nao for envia uma mensagem para o mesmo.

    Por fim, usamos o OnPlayerExitDynamicCP callback para sair do ponto de verificação


    Code:

    public OnPlayerEnterDynamicCP(playerid, checkpointid)
    {
    for(new x; x {
    if(HouseInformation[x][checkpointidx][0] == checkpointid) //If the entry checkpoint is entry checkpoint.
    {
    if(InHouse[playerid] != -1)
    {
    InHouse[playerid] = -1;
    return 1;
    }
    InHouseCP[playerid] = x;
    new Pname[24];
    GetPlayerName(playerid, Pname, 24);
    if(HouseInformation[x][owner][0] != 0 && !strcmp(Pname, HouseInformation[x][owner][0]))
    {
    SetPlayerPos(playerid, HouseInformation[x][TelePos][0], HouseInformation[x][TelePos][1], HouseInformation[x][TelePos][2]);
    SetPlayerInterior(playerid, HouseInformation[x][interiors]);
    SetPlayerVirtualWorld(playerid, 15500000 + x);
    }
    if(!HouseInformation[x][owner][0]) SendClientMessage(playerid, -1, "Esta casa esta á venda use /comprar para adiquiri-lá");
    return 1;
    }
    if(HouseInformation[x][checkpointidx][1] == checkpointid)
    {
    if(InHouse[playerid] == -1)
    {
    InHouse[playerid] = x;
    return 1;
    }
    SetPlayerPos(playerid, HouseInformation[x][EnterPos][0], HouseInformation[x][EnterPos][1], HouseInformation[x][EnterPos][2]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    }
    return 1;
    }

    public OnPlayerLeaveDynamicCP(playerid, checkpointid)
    {
    if(InHouseCP[playerid] != - 1) InHouseCP[playerid] = -1; /
    return 1;
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11441
    Moedas : 1032184
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    Criando casas para vender no SA-MP ( pelo gm ) Empty Re: Criando casas para vender no SA-MP ( pelo gm )

    Mensagem por Weslley_Script Sáb 26 Nov 2011 - 12:17

    Nossa ficou mutio bom Parabens Very Happy
    Anonymous
    Convidad
    Convidado


    Criando casas para vender no SA-MP ( pelo gm ) Empty Re: Criando casas para vender no SA-MP ( pelo gm )

    Mensagem por Convidad Ter 29 Nov 2011 - 14:16

    Está faltando Créditos , Pelo que eu Vi , ta quase puro CTRL + C vi em um Blog e no Forum SA:MP.



    Sem querer botar defeito, se ofendi me desculpe.
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11441
    Moedas : 1032184
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    Criando casas para vender no SA-MP ( pelo gm ) Empty Re: Criando casas para vender no SA-MP ( pelo gm )

    Mensagem por Weslley_Script Dom 4 Dez 2011 - 10:22

    mais é Assim mesmo ow o Alvaro tem que por os creditos Do Autor dps visse =D

    Conteúdo patrocinado


    Criando casas para vender no SA-MP ( pelo gm ) Empty Re: Criando casas para vender no SA-MP ( pelo gm )

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui 30 maio 2024 - 1:10