[Ajuda]Marcar area
#1

Eu queria criar uma area que quando o player entra-se as armas fosses retiradas
e quando ele sai-se as armas sejam devolvidas...
Eu sei que tem que salvar as armas e tals
oque eu nao sei e criar a area
e checar quando o player entrar e sair dela.

alguem da um help ai
por favor
Reply
#2

Nгo precisa retirar as armas, use SetTimerEx pra armarlo com a arma 0(punho), e use IsPlayerInArea tambйm com SetTimerEx, pra detectar se ele estб no quadrado.
Reply
#3

desculpe pela minha nobice
mas como eu faзo isso
Reply
#4

(apagado)
Reply
#5

Vo tentar te ajudar !

pra vocк marcar a area vocк faz assim

no topo do mode poe:

pawn Код:
new area1;
no OnGameModeInit vocк poe:

pawn Код:
area1 = GangZoneCreate(minx,miny,maxx,maxy);
e no OnPlayerSpawn:

pawn Код:
GangZoneShowForPlayer(playerid, area1, 0x00FF0045);
pra verificar a area faz assim:

no topo do seu mode vc poe o seguinte:

pawn Код:
new bool:NaArea[MAX_PLAYERS];
forward VerArea();
agora no OnGameModeInit vocк poe:

pawn Код:
SetTimer("VerArea",1000, true);
e no final do seu mode vocк poe:

pawn Код:
public VerArea()
{
    for(new i = 0; i < MAX_PLAYERS; ++i)
    {
        if(!NaArea[i])
        {
            if(IsPlayerInArea(i, x+, x-, y+, y-))
            {
                NaArea[i] = true;
                //Aki vocк poe pra retirar as armas e tudo mais
                break;
            }
            else
            {
                NaArea[i] = false;
                //aki vc poe pra dar as armas do cara de volta !
                break;
            }
       }
    }
}
embaixo vocк poe a stock de verificar se ta na area:

pawn Код:
stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
  new Float:x, Float:y, Float:z;
  GetPlayerPos(playerid, x, y, z);
  if (x > minx && x < maxx && y > miny && y < maxy) return 1;
  return 0;
}
ali na hora de posiзoes й minx, maxx, miny, maxy e nao minx,miny,maxx,minx como no gangzonecreate !


-
Reply
#6

consegui marca a area certinho
retira a arma
so q nao consegui salva e devolve a arma
nao sei como faze pra salva as 5 armas que podem estar na mao
Reply
#7

Estuda o sisteminha que fiz й facinho aprender:

Cria uma pasta nome (Players) nas scriptfiles
pawn Код:
#include <a_samp>
#include "Dini"

#define PastaKits    "Players/%s.ini"
#define Kits      1458

new Kit[MAX_PLAYERS];

main()
{
    print("\n----------------------------------");
    print(" Kit de Armas By: [NWD]Jim._.Carrey ");
    print("----------------------------------\n");
}

public OnPlayerDisconnect(playerid, reason)
{
    SalvarKit(playerid);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    CarregarKit(playerid);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/Kit2", cmdtext, true, 10) == 0)
    {
        ShowPlayerDialog(playerid, Kits, DIALOG_STYLE_LIST, "Kit's de Armas","1 - Sawn-off Tec9 e Eagle - $20.000\n2 - Micro SMG MP5 e Sniper - $22.000\nShotgun 9mm e AK-47","Comprar", "Cancelar");
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == Kits)
    {
        if(response)
        {
            switch (listitem)
            {
                case 0:
                {
                    SendClientMessage(playerid, 0xFF00AA, "(KIT) Parabйns Kit n°1 adquirido com sucesso! ( Ealge, Sawn-Off, Tec9 )");
                    new player[128];
                    format(player, sizeof(player), Contas, Nome(playerid));
                    Kit[playerid] = dini_IntSet(player, "Kit", 1);
                    ResetPlayerWeapons(playerid);
                    GivePlayerWeapon(playerid, 24, 9999);// Eagle
                    GivePlayerWeapon(playerid, 26, 9999);// Sawn-Off
                    GivePlayerWeapon(playerid, 32, 9999);// Tec9
                    return 1;
                }
                case 1:
                {
                    SendClientMessage(playerid, 0xFF00AA, "(KIT) Parabйns Kit n°1 adquirido com sucesso! ( Micro, MP5, Sniper )");
                    new player[128];
                    format(player, sizeof(player), Contas, Nome(playerid));
                    ResetPlayerWeapons(playerid);
                    GivePlayerWeapon(playerid, 28, 9999);// Micro SMG
                    GivePlayerWeapon(playerid, 29, 9999);// MP5
                    GivePlayerWeapon(playerid, 34, 9999);// Sniper
                    Kit[playerid] = dini_IntSet(player, "Kit", 2);
                    return 1;
                }
                case 2:
                {
                    SendClientMessage(playerid, 0xFF00AA, "(KIT) Parabйns Kit n°1 adquirido com sucesso! ( Shotgun, 9mm, AK-47 )");
                    new player[128];
                    format(player, sizeof(player), Contas, Nome(playerid));
                    ResetPlayerWeapons(playerid);
                    GivePlayerWeapon(playerid, 25, 9999);// Shotgun
                    GivePlayerWeapon(playerid, 22, 9999);// 9mm
                    GivePlayerWeapon(playerid, 30, 9999);// AK-47
                    Kit[playerid] = dini_IntSet(player, "Kit", 3);
                    return 1;
                }
            }
        }
    }
    return 1;
}

stock CarregarKit(playerid)
{
    new player[128];
    format(player, sizeof(player), Contas, Nome(playerid));
    Kit[playerid] = dini_Int(player, "Kit");
    if(Kit[playerid] == 1)
    {
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid, 24, 9999);// Eagle
        GivePlayerWeapon(playerid, 26, 9999);// Sawn-Off
        GivePlayerWeapon(playerid, 32, 9999);// Tec9
        return 1;
    }
    else if(Kit[playerid] == 2)
    {
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid, 28, 9999);// Micro SMG
        GivePlayerWeapon(playerid, 29, 9999);// MP5
        GivePlayerWeapon(playerid, 34, 9999);// Sniper
        return 1;
    }
    else if(Kit[playerid] == 3)
    {
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid, 25, 9999);// Shotgun
        GivePlayerWeapon(playerid, 22, 9999);// 9mm
        GivePlayerWeapon(playerid, 30, 9999);// AK-47
        return 1;
    }
    return 1;
}

stock SalvarKit(playerid)
{
    new player[128];
    format(player, sizeof(player), Contas, Nome(playerid));

    if(Kit[playerid] == 1)
    {
        dini_IntSet(player, "Kit", 1);
    }
    else if(Kit[playerid] == 2)
    {
        dini_IntSet(player, "Kit", 2);
    }
    return 1;
}

stock Nome(playerid)
{
    new nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nome, sizeof(nome));
    return nome;
}
Reply
#8

Jim._.Carrey
axo q voce nao intendeu
eu preciso salvar as armas que estao nao mao do cara ja
pra depois que devolver elas
Reply
#9

Usei a public do manolo ai de cima agora й olhar e ter uma idйia de como fazer:

pawn Код:
public VerArea()
{
    for(new i = 0; i < MAX_PLAYERS; ++i)
    {
        if(!NaArea[i])
        {
            if(IsPlayerInArea(i, x+, x-, y+, y-))
            {
                NaArea[i] = true;
                //Aki vocк poe pra retirar as armas e tudo mais
                new player[128];
                format(player, sizeof(player), Contas, Nome(playerid));
                //
                if(if(GetPlayerWeapon(playerid) == 30)// AK-47
                {
                    dini_IntSet(player, "AK-47", 1);
                }
                ResetPlayerWeapons(playerid);
                break;
            }
            else
            {
                NaArea[i] = false;
                //aki vc poe pra dar as armas do cara de volta !
                new player[128];
                format(player, sizeof(player), Contas, Nome(playerid));
                //
                if(dini_Int(player, "AK-47") == 1)
                {
                    ResetPlayerWeapons(playerid);
                    GivePlayerWeapon(playerid, 30, 9999);// AK-47
                    dini_IntSet(player, "AK-47", 0);
                    return 1;
                }
                break;
            }
       }
    }
}
Reply
#10

Acho melhor fazer como te falei, e caso quisesse salvar as armas nгo seria necessбrio abrir um arquivo, armazenaria tudo em arrays, que tenso.
Faзa um timer que arme o jogador com a arma 0.

pawn Код:
forward DesarmarJogador(jogador);
public DesarmarJogador(jogador) return SetPlayerArmedWeapon(jogador, 0);
Quando entrar na бrea:
pawn Код:
SetTimerEx("DesarmarJogador", 1000, true, "d", playerid ou i);
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)