[Ajuda] Criar vбrios veiculos usando mesma variбvel
#1

Tenho um Fs que cria veiculos. Os veiculos criados permitem entrada apenas de Vips.
Quando crio 'um' veiculo com a variбvel ele fica bloqueado para os demais (nгo vips), atй entгo normal. Mas quando crio 2 ou mais veiculos usando a mesma variavel fica bloqueado apenas o ъltimo veiculo criado.

Como posso criar vбrios veiculos com a mesma variбvel, sendo que ambos fiquem bloqueados para nгo vips?
pawn Код:
new VeiculoVIP; //Variavel

public OnPlayerCommandText
if(strcmp("/vcar",cmdtext,true,11) == 0)
    {
        if(GetVipLevel(playerid) == 0) // se o VIP do jogador for 0 returna a scm
        return SendClientMessage(playerid, -1, "{B4FC0A}[ INFO ] {FFFFFF}Vocк nгo й vip!");
        ShowPlayerDialog(playerid,Principal,DIALOG_STYLE_LIST,"Concessionaria VIP","Veiculo 1","Selecionar", "Cancelar");
        return 1;
    }
    return 0;
    }

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == Principal)
    {
        if(response)
        {
            if(listitem == 0)
            {
            new Float:x, Float:y, Float:z;
            GetPlayerPos(playerid, x, y, z);
            VeiculoVIP = CreateVehicle(411, x+3, y+3, z+2, 0, 1, -1, 9999999);
            GameTextForPlayer(playerid, "~y~]~w~Criado com sucesso~y~]", 3000, 5);
            for(new i=1; i<MAX_VEHICLES; i++)
            {
            SetVehicleNumberPlate(i, "*** VIP ***");
            }
            }
            }
    return 1;
    }

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    for(new i; i < MAX_VEHICLE_VIP; i++) {
        if(GetVipLevel(playerid) == 1) continue; //Chamada de callback dos vips. 1= True vip
        if(vehicleid == VeiculoVIP) { //Variavel do veiculo
            if(GetVipLevel(playerid) == 1) {  //Chamada de callback dos vips. 1= True vip
                SendClientMessage(playerid,-1,"Bem vindo"); // msg ao vip
            }
            else {
                SendClientMessage(playerid,-1,"#Este veiculo nгo й autorizado para seu uso! Apenas Vips!"); //Msg para o player nгo vip
                TogglePlayerControllable(playerid,false);
                TogglePlayerControllable(playerid,true);
                }
            }
        return 1;
}
Quero criar varios veiculos iguais, com a mesma variavel, e que ambos fiquem bloqueado para players nгo vip!
Reply
#2

new VeiculoVIP[MAX_VEHICLES];

e em verificaзхes:

VeiculoVIP[vehicleid]

tente e diga se funciona.
Reply
#3

Quote:
Originally Posted by DannielCooper
Посмотреть сообщение
new VeiculoVIP[MAX_VEHICLES];

e em verificaзхes:

VeiculoVIP[vehicleid]

tente e diga se funciona.
Verificaзхes? Onde?

@Edit.
Nгo funcionou, os carros nгo ficaram bloqueado para nгo vips, ficou tudo liberado.
Reply
#4

Isto me parece ser um erro de verificaзгo.

Tente o seguinte:

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(VeiculoVIP[vehicleid]{
        if(!SuaVarDeVIP[playerid]){
            SendClientMessage(playerid, -1, "Vocк nгo й VIP!");
            RemovePlayerFromVehicle(playerid);
        }
    }
    return 1;
}
Reply
#5

Quote:
Originally Posted by DannielCooper
Посмотреть сообщение
Isto me parece ser um erro de verificaзгo.

Tente o seguinte:

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(VeiculoVIP[vehicleid]{
        if(!SuaVarDeVIP[playerid]){
            SendClientMessage(playerid, -1, "Vocк nгo й VIP!");
            RemovePlayerFromVehicle(playerid);
        }
    }
    return 1;
}
Nгo funcionou. Ficou novamente tudo liberado, nгo ejetou players nгo-vip.
Aqui o cуdigo completo: http://pastebin.com/ht45bSYP
Se puderem ajudar agradeзo.
Reply
#6

pawn Код:
new valor;
new variavel[valor];
Modo de uso para adicionar:
pawn Код:
variavel[valor] = // Funзгo que irб ser chamada por este valor.
/*
Exemplo:
variavel[valor] = playerid;
se o valor da variavel valor ainda for 0 pode pegar o id do jogador dessa forma:
variavel[0];
Exemplo2:
if(IsPlayerAdmin(variavel[0]))
*/

valor++; // aumenta o valor da variavel valor para a proxima vez que for utilizada.
~
Nгo sou bom com explicaзхes, mas acho que dб para compreender.
Reply
#7

Olhe meu cуdigo e me diga em qual parte colocar o ++ ? Por favor.
Entendi mais ou menos sua explicaзгo. Isso й um loop, correto?
Reply
#8

Alguem ajuda??
Reply
#9

Nгo й um loop, e nгo, nгo vou dar um cуdigo pronto.
mas vou dar uma forзa.

pawn Код:
// comeзo do script:
new valor_;
new veiculo_vip[valor_];

// Onde cria o carro:
veiculo_vip[valor_] = CreateVehicle(411, x+3, y+3, z+2, 0, 1, -1, 9999999);
valor_++;

// Onde verifica se o veнculo й vip:
for(new v; v < sizeof valor_; v ++)
{
    if(veiculo_vip[v] == vehicleid)
    {
        // funзгo caso o veнculo for vip.
    }
}
o cуdigo ta mastigado, falta apenas concluir.
Reply
#10

Consegui com o seguinte cуdigo:
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
        if(newstate == PLAYER_STATE_DRIVER)
        {
                if (GetVipLevel(playerid) == 0)
                {
                    SendClientMessage(playerid, 0xFF0000FF, "[ ERRO ] {FFFFFF}Vocк nгo pode usar este veнculo! Apenas Vips!");
                    RemovePlayerFromVehicle(playerid);
                }
        }
        return true;
}
Tente, tentei e tentei... atй que consegui! Valeu pela ajuda de todos!
Atravйs da explicaзгo de cada um consegui montar o quebra cabeзa.

+++ REP
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)