Posted by zeruel_angel on Wed 27 Feb 18:48 (modification of post by view diff)
report abuse | View followups from jessica, Anonymous, asdw and daeesdasdsssssssssssss | download | new post
- //------------------------------------------------------------------------------
- // Simple car commands FilterScritp
- // packed indented and adapted by zeruel_angel
- // CREDITS TO
- // pekay http://forum.sa-mp.com/index.php?topic=26414.0
- // Allan (/lock /unlock and strtok) http://forum.sa-mp.com/index.php?topic=2868.msg18858#msg18858
- // Joshua Yu (/purchase and /callmycar) http://forum.sa-mp.com/index.php?topic=2868.msg22605#msg22605
- // Alfredk (/eject) http://forum.sa-mp.com/index.php?topic=26402
- //------------------------------------------------------------------------------
- #include <a_samp>
- #define COLOR_GREEN 0x33AA33AA
- #define COLOR_YELLOW 0xFFFF00AA
- #define COLOR_RED 0xAA3333AA
- #define COLOR_WHITE 0xFFFFFFAA
- #define CAR_COST 50000
- new owner[MAX_VEHICLES]={-1,...};
- new ownedcar[MAX_PLAYERS]={-1,...};
- new lockedCar[MAX_VEHICLES]={-1,...};
- new wasInVehicle[MAX_PLAYERS]={-1,...};
- //------------------------------------------------------------------------------
- public OnFilterScriptInit()
- {
- print(" ");
- print(" ---------------------------------- ");
- print(" Car Commands Filterscript ");
- print(" Packed indented and adapted ");
- print(" by zeruel_angel ");
- print(" Credits to: ");
- print(" pekay, Allan, Joshua Yu, Alfredk ");
- print(" ---------------------------------- ");
- print(" ");
- for (new i=0;i<MAX_PLAYERS;i++)
- {
- ownedcar[i]=-1;
- wasInVehicle[i]=-1;
- }
- for (new i=0;i<MAX_VEHICLES;i++)
- {
- owner[i]=-1;
- lockedCar[i]=0;
- }
- }
- //------------------------------------------------------------------------------
- public OnPlayerConnect(playerid)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"AYUDA: usa /carhelp para conocer los comandos de los autos");
- for (new i=0;i<700;i++)
- {
- if (lockedCar[i]==1)
- {
- SetVehicleParamsForPlayer( i, playerid, 0, 1);
- }
- }
- }
- //------------------------------------------------------------------------------
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new idx;
- new cmd[255];
- new tmp[255];
- cmd = strtok(cmdtext,idx);
- if (strcmp(cmdtext, "/carhelp", true)==0)
- {
- SendClientMessage(playerid, COLOR_GREEN,"Comandos disponibles:");
- SendClientMessage(playerid, COLOR_YELLOW,"/traba, /destraba, /ComprarCoche, /VenderCoche, /LlamarCoche, /eject, /ejectall");
- return 1;
- }
- if (strcmp(cmdtext, "/traba", true)==0)
- {
- if (IsPlayerInAnyVehicle(playerid))
- {
- new State=GetPlayerState(playerid);
- if (State!=PLAYER_STATE_DRIVER)
- {
- SendClientMessage(playerid,0xFFFF00AA,"Solo el conductor puede trabar las puertas");
- return 1;
- }
- lockedCar[GetPlayerVehicleID(playerid)]=1;
- new i;
- for (i=0;i<MAX_PLAYERS;i++)
- {
- if(i != playerid)
- {
- SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
- }
- }
- SendClientMessage(playerid, 0xFFFF00AA, "Vehiculo cerrado!");
- new Float:pX, Float:pY, Float:pZ;
- GetPlayerPos(playerid,pX,pY,pZ);
- PlayerPlaySound(playerid,1056,pX,pY,pZ);
- }
- else
- {
- SendClientMessage(playerid, 0xFFFF00AA, "No estas en un vehiculo!");
- }
- return 1;
- }
- if (strcmp(cmdtext, "/destraba", true)==0)
- {
- if (IsPlayerInAnyVehicle(playerid))
- {
- new State=GetPlayerState(playerid);
- if (State!=PLAYER_STATE_DRIVER)
- {
- SendClientMessage(playerid,0xFFFF00AA,"Solo el conductor puede destrabar las puertas");
- return 1;
- }
- new i;
- lockedCar[GetPlayerVehicleID(playerid)]=0;
- for (i=0;i<MAX_PLAYERS;i++)
- {
- SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 0);
- }
- SendClientMessage(playerid, 0xFFFF00AA, "Vehiculo destrabado!");
- new Float:pX, Float:pY, Float:pZ;
- GetPlayerPos(playerid,pX,pY,pZ);
- PlayerPlaySound(playerid,1057,pX,pY,pZ);
- }
- else
- {
- SendClientMessage(playerid, 0xFFFF00AA, "No estas en un vehiculo!");
- }
- return 1;
- }
- if (strcmp(cmdtext, "/ComprarCoche", true)==0) // to set the vehicle that you register to be teleported
- {
- if (GetPlayerMoney(playerid) < CAR_COST)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"No tienes suficiente dinero para comprar un auto");
- return 1;
- }
- if (!(IsPlayerInAnyVehicle(playerid)))
- {
- SendClientMessage(playerid,COLOR_YELLOW,"No estas en un vehiculo!.");
- return 1;
- }
- if (owner[GetPlayerVehicleID(playerid)]!=-1)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"Este vehiculo ya tiene dueño");
- return 1;
- }
- if (ownedcar[playerid]!=-1)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"Ya tienes un vehiculo, usa /venderCoche si lo quieres vender para comprar este");
- return 1;
- }
- ownedcar[playerid] = GetPlayerVehicleID(playerid);
- owner[ownedcar[playerid]] = playerid;
- SendClientMessage(playerid,COLOR_YELLOW,"FELICITACIONES! has comprado un vehiculo");
- GivePlayerMoney(playerid,-CAR_COST);
- return 1;
- }
- if (strcmp(cmdtext, "/VenderCoche", true)==0)
- {
- if (ownedcar[playerid]==-1)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"NO posees ningun vehiculo...");
- return 1;
- }
- if (lockedCar[ownedcar[playerid]]==1)
- {
- lockedCar[ownedcar[playerid]]=0;
- for (new i=0;i<MAX_PLAYERS;i++)
- {
- SetVehicleParamsForPlayer(ownedcar[playerid],i, 0, 0);
- }
- }
- owner[ownedcar[playerid]] = -1;
- ownedcar[playerid] = -1;
- SendClientMessage(playerid,COLOR_YELLOW,"Has vendido tu vehiculo, recuperas la mitad de tu dinero");
- GivePlayerMoney(playerid,CAR_COST/2);
- return 1;
- }
- if (strcmp(cmdtext, "/LlamarCoche", true)==0)
- {
- if (ownedcar[playerid] != -1)
- {
- if (GetPlayerMoney(playerid) < 1000)
- {
- SendClientMessage(playerid,COLOR_YELLOW,"Lo sentimos mucho, pero no tienes dinero suficiente para ese servicio.");
- }
- else
- {
- new Float:playerpos[4];
- GetPlayerPos(playerid,playerpos[0],playerpos[1],playerpos[2]);
- GetPlayerFacingAngle(playerid,playerpos[3]);
- SetVehicleZAngle(ownedcar[playerid],playerpos[3]+90.0);
- SetVehiclePos(ownedcar[playerid],playerpos[0]+3.0*floatsin(-playerpos[3],degrees),playerpos[1]+3.0*floatcos(-playerpos[3],degrees),playerpos[2]+0.5); // This one is cool that I am using trigo functions to set the vehicle just before you.
- SendClientMessage(playerid,COLOR_YELLOW,"Gracias por usar nuestro servicio, aqui esta tu coche.");
- GivePlayerMoney(playerid,-1000);
- }
- }
- }
- if (strcmp(cmd,"/eject", true)==0){
- new vehicleid;
- new pid;
- new playerstate = GetPlayerState(playerid);
- tmp = strtok(cmdtext,idx);
- if (!IsPlayerInAnyVehicle(playerid))
- {
- SendClientMessage(playerid,COLOR_YELLOW,"No estas en un vehiculo");
- return 1;
- }
- if (playerstate == PLAYER_STATE_PASSENGER)
- {
- SendClientMessage(playerid,COLOR_RED,"Los pasajeros no pueden usar este comando!");
- return 1;
- }
- vehicleid = GetPlayerVehicleID(playerid);
- if (!strlen(tmp))
- {
- SendClientMessage(playerid,COLOR_WHITE,"USo: /eject [playerid]");
- return 1;
- }
- pid = strval(tmp);
- if ((!IsPlayerConnected(pid))||(!IsPlayerInVehicle(pid,vehicleid)))
- {
- SendClientMessage(playerid,COLOR_RED,"Ese jugador no esta en tu vehiculo.");
- return 1;
- }
- else
- {
- RemovePlayerFromVehicle(pid);
- GameTextForPlayer(pid,"~w~Te han ~r~TIRADO ~w~ del vehiculo!!",3000,5);
- return 1;
- }
- }
- if (strcmp(cmd,"/ejectall", true)==0){
- new vehicleid;
- new playerstate = GetPlayerState(playerid);
- if (!IsPlayerInAnyVehicle(playerid))
- {
- SendClientMessage(playerid,COLOR_YELLOW,"No estas en un vehiculo");
- return 1;
- }
- if (playerstate == PLAYER_STATE_PASSENGER)
- {
- SendClientMessage(playerid,COLOR_RED,"Los pasajeros no pueden usar este comando!");
- return 1;
- }
- vehicleid = GetPlayerVehicleID(playerid);
- for (new i=0;i<MAX_PLAYERS;i++)
- {
- if ((IsPlayerConnected(i))&&(IsPlayerInVehicle(i,vehicleid)))
- {
- RemovePlayerFromVehicle(i);
- GameTextForPlayer(i,"~w~Te han ~r~TIRADO ~w~ del vehiculo!!",3000,5);
- return 1;
- }
- }
- }
- return 0;
- }
- //------------------------------------------------------------------------------
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if (newstate==PLAYER_STATE_DRIVER)
- {
- wasInVehicle[playerid]=GetPlayerVehicleID(playerid);
- if ((owner[GetPlayerVehicleID(playerid)]!=-1)&&(owner[GetPlayerVehicleID(playerid)]!=playerid))
- {
- new name[MAX_PLAYER_NAME];
- new msg[256];
- GetPlayerName(owner[GetPlayerVehicleID(playerid)],name,sizeof(name));
- format(msg,sizeof(msg),"Este vehiculo pertenece a: %s",name);
- }
- }
- if (newstate==PLAYER_STATE_PASSENGER)
- {
- if ((owner[GetPlayerVehicleID(playerid)]!=-1)&&(owner[GetPlayerVehicleID(playerid)]!=playerid))
- {
- new name[MAX_PLAYER_NAME];
- new msg[256];
- GetPlayerName(owner[GetPlayerVehicleID(playerid)],name,sizeof(name));
- format(msg,sizeof(msg),"Este vehiculo pertenece a: %s",name);
- SendClientMessage(playerid,COLOR_YELLOW,msg);
- }
- }
- if (newstate==PLAYER_STATE_ONFOOT)
- {
- if ((wasInVehicle[playerid]!=ownedcar[playerid])&&(lockedCar[wasInVehicle[playerid]]==1))
- {
- lockedCar[GetPlayerVehicleID(playerid)]=0;
- for (new i=0;i<MAX_PLAYERS;i++)
- {
- SetVehicleParamsForPlayer(ownedcar[playerid],i, 0, 0);
- }
- SendClientMessage(playerid, 0xFFFF00AA, "Vehicle destrabado!");
- new Float:pX, Float:pY, Float:pZ;
- GetPlayerPos(playerid,pX,pY,pZ);
- PlayerPlaySound(playerid,1057,pX,pY,pZ);
- }
- }
- return 1;
- }
- //------------------------------------------------------------------------------
- public OnPlayerDisconnect(playerid, reason)
- {
- if ((ownedcar[playerid]!=-1)&&(lockedCar[ownedcar[playerid]]=1))
- {
- lockedCar[ownedcar[playerid]]=0;
- for (new i=0;i<MAX_PLAYERS;i++)
- {
- SetVehicleParamsForPlayer(ownedcar[playerid],i, 0, 0);
- }
- }
- if (ownedcar[playerid]!=-1)
- {
- owner[ownedcar[playerid]]=-1;
- ownedcar[playerid]=-1;
- }
- wasInVehicle[playerid]=-1;
- return 1;
- }
- //------------------------------------------------------------------------------
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- //------------------------------------------------------------------------------
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.