SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 07/06/2019, 03:46 PM   #1
ImScoope
Banned
 
Join Date: Mar 2019
Posts: 25
Reputation: 0
Question Sistema de "bike alugável" não funciona

Bom, esse sistema aqui não tá funcionando, fiz ele com base em um sistema de carros para org
PHP Code:
public OnPlayerStateChange(playeridnewstateoldstate)
{
    if(
oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
        new 
vehicleid GetPlayerVehicleID(playerid);//
        
if(vehicleid == || vehicleid == || vehicleid == 0) { }
        else
        {
            if(
BikeAlugavel(vehicleid))
            {
                if(
GetPlayerMoney(playerid) < 50)
                {
                    
SendClientMessage(playerid, -1"{FF0000}Voce nao tem dinheiro para alugar uma bicicleta!");
                    
RemovePlayerFromVehicle(playerid);
                }
                else
                {
                    
SendClientMessage(playerid, -1"{00FF00}Voce alugou uma bicicleta por R$50, ela sera recolhida apos ficar 1min sem andar nela.");
                    
GivePlayerMoney(playerid, -50);
                }
            }
        }
    }
    return 
1;

PHP Code:
forward BikeAlugavel(carid);
public 
BikeAlugavel(carid)
{
    if(
carid == 510)
    {
        return 
1;
    }
    return 
0;

Alguém me ajuda? :/
ImScoope is offline   Reply With Quote
Old 07/06/2019, 04:36 PM   #2
AutoMatic2
Huge Clucker
 
Join Date: Apr 2018
Location: Patrocínio MG
Posts: 428
Reputation: 11
Wink Re: Sistema de "bike alugável" não funciona

PHP Code:
new vehicleid GetPlayerVehicleID(playerid);// 
if(vehicleid == || vehicleid == || vehicleid == 0) { } 
Faz um tempo que não programo, porém não existe veículos com id 0 kkkk eles começa do 400 ate 611
e tbm vc ta igualando 3 vehicleid igual a 0.

Eu n tenho em prática como isso ta funcionando mais arrume essas linhas e tbm n precisa de public para isso, da pra fazer direto.


* Dica:

caso vc ta criando suas bikes por arrays, não sei se e isso mesmo, mas e tipo assim:

PHP Code:
new BikeAlugavel[4];

public 
OnGameModeInit()
{
    
BikeAlugavel[0] = AddStaticVehicle(...);
    
BikeAlugavel[1] = AddStaticVehicle(...);
    
BikeAlugavel[2] = AddStaticVehicle(...);
    
BikeAlugavel[3] = AddStaticVehicle(...);
    return 
1;

Quando ele entrar vc só coloca um for

PHP Code:
for(new bsizeof(BikeAlugavel); ++b)
{
    if(
GetPlayerVehicleID(playerid) == BikeAlugavel[b])
    {
        
// ...
    
}

__________________
Você nunca vai aprender desistindo!
AutoMatic2 is offline   Reply With Quote
Old 07/06/2019, 04:42 PM   #3
ImScoope
Banned
 
Join Date: Mar 2019
Posts: 25
Reputation: 0
Default Re: Sistema de "bike alugável" não funciona

Quote:
Originally Posted by AutoMatic2 View Post
PHP Code:
new vehicleid GetPlayerVehicleID(playerid);// 
if(vehicleid == || vehicleid == || vehicleid == 0) { } 
Faz um tempo que não programo, porém não existe veículos com id 0 kkkk eles começa do 400 ate 611
e tbm vc ta igualando 3 vehicleid igual a 0.

Eu n tenho em prática como isso ta funcionando mais arrume essas linhas e tbm n precisa de public para isso, da pra fazer direto.
Ok, vou tentar.
ImScoope is offline   Reply With Quote
Old 07/06/2019, 04:43 PM   #4
AutoMatic2
Huge Clucker
 
Join Date: Apr 2018
Location: Patrocínio MG
Posts: 428
Reputation: 11
Default Re: Sistema de "bike alugável" não funciona

Quote:
Originally Posted by ImScoope
Ok, vou tentar.
Depois olha o edit.
__________________
Você nunca vai aprender desistindo!
AutoMatic2 is offline   Reply With Quote
Old 07/06/2019, 04:46 PM   #5
ImScoope
Banned
 
Join Date: Mar 2019
Posts: 25
Reputation: 0
Default Re: Sistema de "bike alugável" não funciona

não estou criando por arrays, é porque por enquanto todas as bikes id 510 serão alugáveis
ImScoope is offline   Reply With Quote
Old 07/06/2019, 04:48 PM   #6
AutoMatic2
Huge Clucker
 
Join Date: Apr 2018
Location: Patrocínio MG
Posts: 428
Reputation: 11
Default Re: Sistema de "bike alugável" não funciona

S, eu ia editar pra falar isso.

Mas se quer assim e só fazer quase do mesmo modo, porém sem o for.
__________________
Você nunca vai aprender desistindo!
AutoMatic2 is offline   Reply With Quote
Old 07/06/2019, 04:54 PM   #7
ImScoope
Banned
 
Join Date: Mar 2019
Posts: 25
Reputation: 0
Default Re: Sistema de "bike alugável" não funciona

Segui sua primeira dica, nao funcionou...
PHP Code:
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
        new 
vehicleid GetPlayerVehicleID(playerid);//
        
if(vehicleid == 510)
        {
            if(
GetPlayerMoney(playerid) < 50)
            {
                
SendClientMessage(playerid, -1"{FF0000}Voce nao tem dinheiro para alugar uma bicicleta!");
                
RemovePlayerFromVehicle(playerid);
            }
            else
            {
                
SendClientMessage(playerid, -1"{00FF00}Voce alugou uma bicicleta por R$50, ela sera recolhida apos ficar 1min sem andar nela.");
                
GivePlayerMoney(playerid, -50);
            }
         }
    } 
Edit 1:
To achando que o problema é nesse if:
PHP Code:
if(GetPlayerMoney(playerid) < 50
Edit 2:
To usando AddStaticVehicleEx, muda algo?
ImScoope is offline   Reply With Quote
Old 07/06/2019, 06:47 PM   #8
AdrianoStk
Huge Clucker
 
AdrianoStk's Avatar
 
Join Date: Jan 2013
Location: Presidente Prudente-SP
Posts: 479
Reputation: 32
Default Re: Sistema de "bike alugável" não funciona

Bom vamos lá, esse sistema que você mencionou ta todo sem pé sem cabeça e as pessoas que tentaram ajudar você não conseguiram entender oque você precisava....

Enfim 510 é o modelo da bike, e não o id,
para se obter um id = GetVehicleID(playerid);
para se obter o modelo = GetVehicleModel(GetPlayerVehicleID(playerid));

Fim um sistema aqui com 5 mim, em modo FS;
Estude ele e faça você mesmo um sistema bem melhor!
Este sistema funciona com carros tambem!!! Para adicionar mais bikes ou veiculos mude o tamanho da variavel
new bikes[4][vbike]; para a quantidade nescessaria
PHP Code:
#define FILTERSCRIPT

#include <a_samp>

enum vbike
{
    
vid,//id da bicicleta
    
vvalor,//valor do aluguel da bike
    
vplayerid//player que alugou
}
new 
bikes[4][vbike];//Possivel 4 bicicletas

#define TEMPOALU 60// Tempo em segundosSegundos

public OnFilterScriptInit()
{

    
bikes[0][vid] = CreateVehicle(510,2035.9398,1350.2606,10.4269,273.1651,3,3TEMPOALU); //Bicicleta 1
    
bikes[1][vid] = CreateVehicle(509,2037.5776,1362.3268,10.2646,290.1107,74,1TEMPOALU); // Bicicleta 2
    
bikes[2][vid] = CreateVehicle(509,2040.0946,1359.2939,10.1835,175.3280,74,1TEMPOALU); // Bicicleta 3
    
bikes[3][vid] = CreateVehicle(510,2038.2231,1356.7136,10.2455,113.0039,28,28TEMPOALU); // Bicicleta 4

    
bikes[0][vvalor] = 100;//Valor da bicileta 1
    
bikes[1][vvalor] = 50;//Valor da bicileta 2
    
bikes[2][vvalor] = 50;//Valor da bicileta 3
    
bikes[3][vvalor] = 100;//Valor da bicileta 4
    
    
for(new 0sizeof(bikes); i++)//Seta todas bicicletas como não alugada
    
{
        
bikes[i][vplayerid] = -1;
    }
    return 
1;
}

public 
OnFilterScriptExit()
{
    return 
1;
}



public 
OnVehicleSpawn(vehicleid)
{
    if(
BikeAlugavel(vehicleid) != -1)//Verifica se o veiculo é uma bicicleta alugavel
        
bikes[BikeAlugavel(vehicleid)][vplayerid] = -1;//Libera a bicicleta para outra pessoa alugar!
    
return 1;
}

public 
OnPlayerStateChange(playeridnewstateoldstate)
{
    if(
oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
        new 
id BikeAlugavel(GetPlayerVehicleID(playerid));
        if(
id != -1)//verifica se ele entrou em um veiculo alugavel
        
{
            if(
bikes[id][vplayerid] == -1)//verifica se o veiculo ja esta alugado
            
{
                if(
GetPlayerMoney(playerid) >= bikes[id][vvalor])//verifica se ele tem dinheiro do valor do aluguel
                
{
                    
SendClientMessage(playerid, -1"Você alugou esta bike!");
                    
GivePlayerMoney(playerid, - bikes[id][vvalor]);
                    
bikes[id][vplayerid] = playerid;//seta veiculo como alugado pra ele (Ant nego roubando e ant pagar duas vezes
                
}
                else
                {
                    
SendClientMessage(playerid, -1"Você não tem dinheiro para alugar este veiculo!");
                    
RemovePlayerFromVehicle(playerid);
                }
            }
            else if(
bikes[id][vplayerid] != playerid)//verifica se o veiculo esta alugado a ele
            
{
                
SendClientMessage(playerid, -1"Esta bicicleta já esta alugada!");
                
RemovePlayerFromVehicle(playerid);
            }
        }
    }
    return 
1;
}

stock BikeAlugavel(vehicleid)
{
    new 
id = -1;
    for(new 
0sizeof(bikes) && id == -1i++)
    {
        if(
bikes[i][vid] == vehicleid)
            
id i;
    }
    return 
id;

__________________
Hayllander Server's


Breve, nos servidores


Discord
AdrianoStk is offline   Reply With Quote
Old 07/06/2019, 06:54 PM   #9
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 337
Reputation: 5
Default Re: Sistema de "bike alugável" não funciona

@EDIT: o Adriano ja deu a solução.

Voce ta confundindo o id do veiculo com o modelo do veiculo.

o certo seria:
PHP Code:
BikeAlugavel(carid)
{
    new 
bike GetVehicleModel(carid);
    if(
bike == 510)
        return 
1;
    return 
0;

De qualquer forma eu te recomendo fazer dessa maneira:

PHP Code:
public OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    if(!
IsPlayerNPC(playerid))
    {
        if(
IsPlayerConnected(playerid))
        {
            if(
isBike(vehicleid))
            {
                if(
GetPlayerMoney(playerid) >= 50)
                {
                    
SendClientMessage(playerid, -1"{00FF00}Voce alugou uma bicicleta por R$50, ela sera recolhida apos ficar 1min sem andar nela.");
                    
GivePlayerMoney(playerid, -50);
                    return 
1;
                }
                
SendClientMessage(playerid, -1"Voce nao conseguio alugar a bicicleta.");
                
TogglePlayerControllable(playerid0);
                
TogglePlayerControllable(playerid1);
                return 
0;
            }
        }
    }

PHP Code:
stock isBike(vehicleid)
{
    new 
bike GetVehicleModel(vehicleid);
        if(
bike == 470) return 1;
    return 
0;

PedroH is offline   Reply With Quote
Old 07/06/2019, 06:57 PM   #10
AdrianoStk
Huge Clucker
 
AdrianoStk's Avatar
 
Join Date: Jan 2013
Location: Presidente Prudente-SP
Posts: 479
Reputation: 32
Default Re: Sistema de "bike alugável" não funciona

Quote:
Originally Posted by PedroH View Post
Voce ta confundindo o id do veiculo com o modelo do veiculo.

o certo seria:
PHP Code:
BikeAlugavel(carid)
{
    new 
bike GetVehicleModel(carid);
    if(
bike == 510)
        return 
1;
    return 
0;

De qualquer forma eu te recomendo fazer dessa maneira:

PHP Code:
public OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    if(!
IsPlayerNPC(playerid))
    {
        if(
IsPlayerConnected(playerid))
        {
            if(
isBike(vehicleid))
            {
                if(
GetPlayerMoney(playerid) >= 50)
                {
                    
SendClientMessage(playerid, -1"{00FF00}Voce alugou uma bicicleta por R$50, ela sera recolhida apos ficar 1min sem andar nela.");
                    
GivePlayerMoney(playerid, -50);
                    return 
1;
                }
            
                
TogglePlayerControllable(playerid0);
                
TogglePlayerControllable(playerid1);
                return 
0;
            }
        }
    }

PHP Code:
stock isBike(vehicleid)
{
    new 
bike GetVehicleModel(vehicleid);
        if(
bike == 470) return 1;
    return 
0;

Jovem, isso não funcionaria para a bike 510
Outra coisa, outro player conseguiria alugar o mesmo veiculo!
Caso o jogador voltasse ele pagaria o valor novamente etc etc
Outra coisa não há porque verificar se o jogador esta online, se ele entrou é porque esta kkkk
__________________
Hayllander Server's


Breve, nos servidores


Discord
AdrianoStk is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
error: undefine symbol "j" and expected token ";" but found "]" JEkvall95 Scripting Help 9 27/07/2013 10:09 AM
5 Dialog errors - Input line too long, undefined symbol "t","is" and "only" Deal-or-die Scripting Help 6 01/05/2012 12:08 PM
Admin script requires "ReturnUser", "strtok" and "IsNumeric" Rubennnnn Help Archive 1 02/12/2009 06:08 PM
"Bots", "AI", "NPCs"... Computer-controlled pedestrians and traffic! ssflsnoob General 2 23/11/2008 06:06 PM


All times are GMT. The time now is 09:05 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.