Lending vehicles. -
Jonni8 - 13.06.2010
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.
Re: Lending vehicles. -
DJDhan - 13.06.2010
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.
Re: Lending vehicles. -
Jonni8 - 13.06.2010
Thanks.
It worked great.
Now another question:
whats the id for the info-(pickup)?
Re: Lending vehicles. -
DJDhan - 13.06.2010
1239 - info icon.
You can have a list of pickups
HERE
Re: Lending vehicles. -
Jonni8 - 13.06.2010
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...
Re: Lending vehicles. -
DJDhan - 13.06.2010
In your code, the variable "pname[56]" is an array containing a player name. That's the way to do it.
Re: Lending vehicles. -
Jonni8 - 13.06.2010
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.
Re: Lending vehicles. -
DJDhan - 13.06.2010
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.