Lending vehicles.
#1

Hey.
I need yome help to make something how i can lend a faggio or a bmx to another person.

So when he enter the vehicle he will be asked if he wants to borrow the vehicle and then save it anywhere in a variable so he can use it for 10 minutes.

Here my code that i got yet:
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if (newstate == PLAYER_STATE_DRIVER)
    {
        new Vehicle;
        Vehicle = GetPlayerVehicleID(playerid);
       

        for (new i=0; i<sizeof(NoobVehicles); i++)
        {
            if (Vehicle == NoobVehicles[i])
            {
                TogglePlayerControllable(playerid, 0);
                Frozen[playerid] = 1;
               
                if (GetPlayerMoney(playerid) >= 100)
                {
                    GivePlayerMoney(playerid, -100);
                    SendClientMessage(playerid, YELLOW, "SERVER: Du hast dir das Auto/BMX jetzt fьr 10 Minuten ausgeliehen.");
                    SetTimer("RentCar", 600000, 0);
                    TogglePlayerControllable(playerid, 1);
                    Frozen[playerid] = 0;
                }
                else
                {
                    SendClientMessage(playerid, RED, "SERVER: Du hast zu wenig Geld. (100$)");
                    TogglePlayerControllable(playerid, 1);
                    Frozen[playerid] = 0;
                    RemovePlayerFromVehicle(playerid);
                }
                break;
            }
        }
    }
    return 1;
}
i really dont know if it is in the right callback...
BTW: if he answeres /ja he should get the vehicle and if he types /nein he shouldnt get it.
Reply
#2

You need to put the commands "/ja" and "/nein" under OnPlayerCommandText:

An example:
Код:
if(!strcmp(cmdtext,"/ja",true,3))
{
    new Vehicle;
    Vehicle = GetPlayerVehicleID(playerid);

    for (new i=0; i<sizeof(NoobVehicles); i++)
    {
         if (Vehicle == NoobVehicles[i])
        {
           if(GetPlayerMoney<100) return SendClientMessage(playerid,0xffff00aa,"You do not have enough money.");
           GivePlayerMoney(playerid,-100);
           SendClientMessage(plaeyerid,0xff0000,"You have now rented this car for 10 minutes");
           SetTimer("UnrentCar",600000
        }
    }
    return 1;
}
Then you can code the unrent function.

Reply
#3

Thanks.
It worked great.
Now another question:
whats the id for the info-(pickup)?
Reply
#4

1239 - info icon.

You can have a list of pickups HERE
Reply
#5

i used it but when i go to it i cant walk through the icon.
its like the other objects... i stand on it then.

question:
i want to put the name of the player who rent the vehicle into an array but cant figure out how.
here my code for now:
pawn Код:
new VehicleOwner[100];
CMD:ja(playerid, params[])
{
    new Vehicle;
   
    Vehicle = GetPlayerVehicleID(playerid);
   
    for (new j=0; j<=sizeof(NoobVehicles); j++)
    {
        if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && Vehicle == NoobVehicles[j])
        {
            if (GetPlayerMoney(playerid) >= 100)
            {
                new pname[56];
                GetPlayerName(playerid, pname, sizeof(pname));
               
                GivePlayerMoney(playerid, -100);
                SendClientMessage(playerid, YELLOW, "SERVER: Du hast dir das Auto/BMX jetzt fьr 10 Minuten ausgeliehen.");
                SetTimer("RentCar", 600000, 0);
                TogglePlayerControllable(playerid, 1);
                Frozen[playerid] = 0;
               
                sscanf(pname, "", VehicleOwner[NoobVehicles[j]])
            }
            else
            {
                SendClientMessage(playerid, RED, "SERVER: Du hast zu wenig Geld. (100$)");
                TogglePlayerControllable(playerid, 1);
                Frozen[playerid] = 0;
                RemovePlayerFromVehicle(playerid);
            }
        }
    }
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if (newstate == PLAYER_STATE_DRIVER)
    {
        new Vehicle;
        Vehicle = GetPlayerVehicleID(playerid);
       
        if (Vehicle == CJ_V1 && gTeam[playerid] != TEAM_CJ)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid, RED, "SERVER: Du bist kein Mitglied vom Team \"CJ\"");
        }
       
        else if (Vehicle == BALLA_V1 && gTeam[playerid] != TEAM_BALLA)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid, RED, "SERVER: Du bist kein Mitglied vom Team \"BALLA\"");
        }
       
        else if (Vehicle == GROVE_V1 && gTeam[playerid] != TEAM_GROVE)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid, RED, "SERVER: Du bist kein Mitglied vom Team \"GROVE STREET\"");
        }
        for (new i=0; i<ADMCARSMax; i++)
        {
            if (Vehicle == AdminCars[i] && Player[playerid][ALevel] < 1)
            {
                RemovePlayerFromVehicle(playerid);
                if (Player[playerid][Sprache] == GERMAN)
                {
                    SendClientMessage(playerid, RED, "SERVER: Du bist kein Admin");
                }
                else
                {
                    SendClientMessage(playerid, RED, "SERVER: You are not an Admin");
                }
            }
        }
        for (new i=0; i<sizeof(NoobVehicles); i++)
        {
            if (Vehicle == NoobVehicles[i])
            {
                if (VehicleOwner[NoobVehicles[i]] != 0)
                {                  
                    new pname[56];
                    GetPlayerName(playerid, pname, sizeof(pname));
                    if (strcmp(VehicleOwner[NoobVehicles[i]], pname, true))
                    {
                        SendClientMessage(playerid, YELLOW, "SERVER: Du hast das Fahrzeug bereits gemietet");
                        TogglePlayerControllable(playerid, 1);
                        Frozen[playerid] = 0;
                    }
                    else
                    {
                        SendClientMessage(playerid, RED, "SERVER: Das Fahrrad wird bereits vermietet");
                        TogglePlayerControllable(playerid, 1);
                        Frozen[playerid] = 0;
                        RemovePlayerFromVehicle(playerid);
                    }
                }
                else
                {
                    TogglePlayerControllable(playerid, 0);
                    Frozen[playerid] = 1;
                    SendClientMessage(playerid, YELLOW, "SERVER: Willst du den Roller/BMX fьr 10 Minuten fьr 100$ leihen?");
                    SendClientMessage(playerid, YELLOW, "SERVER: Benutze /ja um ihn zu mieten und /nein um ihn nicht zu mieten");
                }
            }
        }
    }
    return 1;
}
sorry that my code is german...
Reply
#6

In your code, the variable "pname[56]" is an array containing a player name. That's the way to do it.
Reply
#7

And how do i set it into another array? i want to put it into the VehicleOwner array.
But the method with sscanf(...) didnt work.
Reply
#8

Suppose you have two arrays and you want to copy the contents of one array into another:

Код:
new pname[30];
new qname[30];

GetPlayerName(playerid,pname,sizeof(pname));

for(new i=0;i <= strlen(pname);i++)
{
  pname[i]=qname[i];
}
Not tested but should work.


Another way is send the playerid that rented the car to a function where you get the name of the player in a different array.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)