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.

    [Tutorial] Organizaзгo de Interiores e VirtualWords [Entraveis]

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


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

    [Tutorial] Organizaзгo de Interiores e VirtualWords [Entraveis] Empty [Tutorial] Organizaзгo de Interiores e VirtualWords [Entraveis]

    Mensagem por Weslley_Script Dom 19 Mar 2023 - 10:03

    este tutorial й uma dica, de como se organizar bem e facilitar a criaзгo de lugares entraveis em seu GameMode


    NOTAS:
    • Eu estou utilizando a include MCF-CP mas nгo й algo essencial


    • Documente bem os Prй-Processamentos ou os deixe, em um local bem visнvel



    o que se preocupar?
    Vocк armazenara os nomes em matrizes, cada lugar tera seu WD prуprio e vocк nгo deve se preocupar com este numero, apenas com seu respectivo nome.
    Quote:


    _MUNDO
    _PREF_LS
    _PREF_SF
    _DP_LS
    Codficaзгo:
    Estбs sгo as informaзхes que precisam de atenзгo posteriormente
    PHP код:

    Código:
    enum INTERIOR_INFO
    {
        I_interior,
        I_nome[32]


    a seguir a enumeraзгo de interiores, eles recebem um virtualworld, conforme a ordem, e isso й a grande jogada, vocк nгo se preocupa com nъmeros, apenas com as suas definiзхes, uma dor de cabeзa a menos
    PHP код:

    Código:
    enum INTERIORES
    {
        _MUNDO,    
        _PREF_LS,
        _PREF_SF,
        _DP_LS


    a ordem de INTERIORES deve ser a mesma de _Interior, para correspondam igualmente.
    Capturar as coordenadas corretas:
    PHP код:

    Código:
    //primeiro valor й o interior (й a parte visual do mapa que o local pertence)
    //segundo valor й o nome (caso precise utilizar em algum momento)
    new _Interior[INTERIORES][INTERIOR_INFO]=
    {
        {0,                "Mundo"},
        {3,                "Prefeitura LS"},
        {3,                "Prefeitura SF"},
        {6,                "Delegacia LS"}
    }
    //sabendo essas informaзхes e as armazenando pode simplesmente esquece-las 

    Funзхes e Macros:

    PHP код:

    Código:
    //este macro vai te ajudar em diversas aplicaзхes tanto suas quantos de terceiros (SIF,STREAMER,MCF-CP)
    #define INTERIOR<%0>    _:%0,_Interior[%0][I_interior]
    stock GetWord(i)
        return _:i;
    stock GetInterior(i)
        return _:_Interior[_:i][I_interior];
    stock GetInteriorNome(wordid)
        return _Interior[_:wordid][I_nome];
    //caso nгo tenha um script de teleporte similar, aqui estб o meu:
    function TeleportCP(playerid, Float:x, Float:y, Float:z,wd,i)
    {
        SetPlayerInterior(playerid, i);
        SetPlayerPos(playerid, x,y,z);
        SetPlayerVirtualWorld(playerid, wd);
        return 1;


    Exemplos extras:

    PHP код:

    Código:
    public OnGameModeInit()
    {
        CreateButton(244.898437,73.343383,1003.000,"",INTERIOR<_DP_LS>); // SIF
        CreateDynamicObject(19273, 247.75360, 72.38390, 1004.00000,   0.00000, 0.00000, 0.00000,INTERIOR<_DP_LS>);//Streamer
        CreateCheckPoint("dp", CP_CIRCLE, 0x99FF0000, 249.3933,69.7072, 1003.6406,INTERIOR<_DP_LS>);//MCF-CP
        return 1;


    Exemplo de entraveis:
    Nгo documentei e comentei muito este codigo, porque tenho dificuldades de fazer uma explicaзгo extensa,
    porem ele estб bastante intuitivo e simples de se entender, nada massivo e complexo!
    PHP код:

    Código:
    #include <MCF-CP>
    #include <streamer>
    //MACROS para facilitar visualisгo e abreviaзгo do codigo
    #define TELEPORTE_FROM_POS<%0>    _TELE[%0][FromX],_TELE[%0][FromY],_TELE[%0][FromZ],INTERIOR<INTERIORES:_TELE[%0][Fi]>
    #define TELEPORTE_TO_POS<%0>    _TELE[%0][ToX],_TELE[%0][ToY],_TELE[%0][ToZ],INTERIOR<INTERIORES:_TELE[%0][Ti]>
    #define MAX_TELEPORTES     5
    static CPT[MAX_TELEPORTES];            //CheckPoint Teleporte
    static LastCPT[MAX_PLAYERS];        //ultimo CheckPoint de telerpote
    enum TELE_INFO
    {
        Float:FromX,
        Float:FromY,
        Float:FromZ,
        Fi,
        Float:ToX,
        Float:ToY, 
        Float:ToZ,
        Ti,
        Tmessage[100]
    }
    static _TELE[MAX_TELEPORTES][TELE_INFO]=
    {
        {246.7840,63.9002,1003.6406,_:_DP_LS,        1553.9879,-1675.4504,16.2953, _:_MUNDO, "~w~Precisone: ~g~~h~(F)~w~ para sair da delegacia"},
        {246.3030,87.2807,1003.6406,_:_DP_LS,        1525.4456,-1678.0431,5.8906, _:_MUNDO, "~w~Precisone: ~g~~h~(F)~w~ para sair da delegacia"},
        {1553.9879,-1675.4504,16.2953,_:_MUNDO,        246.7840,63.9002, 1003.6406, _:_DP_LS, "~w~Precisone: ~g~~h~(F)~w~ para entrar na delegacia"},
        {1568.6914,-1691.1642,5.8906,_:_MUNDO,        246.3030,87.2807, 1003.6406, _:_DP_LS, "~w~Precisone: ~g~~h~(F)~w~ para entrar na delegacia"},
        {1525.4456,-1678.0431,5.8906,_:_MUNDO,        246.3030,87.2807, 1003.6406, _:_DP_LS, "~w~Precisone: ~g~~h~(F)~w~ para entrar na delegacia"},
    };
    public OnGameModeInit()
    {
        for(new i = 0; i < MAX_TELEPORTES; i++)//criaзгo de todos os CheckPoint de teleporte
            CPT[i]=CreateCheckPoint("entrar", CP_INVISIBLE , 0x99FF0000, TELEPORTE_FROM_POS<i>);
        
        //-------------------------------------
        CreateDynamicPickup(19197, 1,246.7840,63.9002, 1003.64044, INTERIOR<_DP_LS>);//visual dos pickups sгo bem bonitos
        CreateDynamicPickup(19197, 1,246.3030,87.2807, 1003.64044, INTERIOR<_DP_LS>);
        CreateDynamicPickup(19197, 1,1553.9879,-1675.4504,16.2953, INTERIOR<_MUNDO>);
        CreateDynamicPickup(19197, 1,1525.4456,-1678.0431,5.89060, INTERIOR<_MUNDO>);
        CreateDynamicPickup(19197, 1,1568.6914,-1691.1642,5.8906,  INTERIOR<_MUNDO>);
        //----------------------------------------
        return 1;
    }
    CPEnter:entrar(playerid, CPID) 
    {
        for(new i = 0; i < MAX_TELEPORTES; i++)
        {
            if(IsPlayerInCP(playerid, CPT[i]))
            {
                GameTextForPlayer(playerid, _TELE[i][Tmessage], 4000, 4);
                LastCPT[playerid]=i;
                return 1;
            }
        }
        return 1;
    }
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
        if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
            return 1;
        if(!PRESSED(KEY_SECONDARY_ATTACK))
            return 1;
        if(IsPlayerInCP(playerid,CPT[LastCPT[playerid]]))
            return TeleportCP(playerid, TELEPORTE_TO_POS<LastCPT[playerid]>);
        return 1;


    IMPORTANTE:
    estб й a parte que realmente merece atenзгo sua, para criar entraveis, vocк apenas precisa colocar as coordenadas, interiores e textos, o resto jб esta tudo prontinho, organizado, para que facilite ao mбximo a escalabilidade!
    PHP код:

    Código:
    static _TELE[MAX_TELEPORTES][TELE_INFO]= 

        {246.7840,63.9002,1003.6406,_:_DP_LS,        1553.9879,-1675.4504,16.2953, _:_MUNDO, "~w~Precisone: ~g~~h~(F)~w~ para sair da delegacia"}, 
        {246.3030,87.2807,1003.6406,_:_DP_LS,        1525.4456,-1678.0431,5.8906, _:_MUNDO, "~w~Precisone: ~g~~h~(F)~w~ para sair da delegacia"}, 
        {1553.9879,-1675.4504,16.2953,_:_MUNDO,        246.7840,63.9002, 1003.6406, _:_DP_LS, "~w~Precisone: ~g~~h~(F)~w~ para entrar na delegacia"}, 
        {1568.6914,-1691.1642,5.8906,_:_MUNDO,        246.3030,87.2807, 1003.6406, _:_DP_LS, "~w~Precisone: ~g~~h~(F)~w~ para entrar na delegacia"}, 
        {1525.4456,-1678.0431,5.8906,_:_MUNDO,        246.3030,87.2807, 1003.6406, _:_DP_LS, "~w~Precisone: ~g~~h~(F)~w~ para entrar na delegacia"}, 
    }; 

    Veja como ficou simples e pratico! bons treinos e boa sorte!



    CREDITOS:
    Quote:

    RazorG
    : Tutorial e Elaboraзгo do Cуdigo!



    [Tutorial] Organizaзгo de Interiores e VirtualWords [Entraveis] D07Xwqb
    [Tutorial] Organizaзгo de Interiores e VirtualWords [Entraveis] Yjab9HN

      Data/hora atual: Qui 9 maio 2024 - 16:34