tengo un script para el camion packer para ponerle vehiculos encima hasta hay todo bien el problema esta al ponerle los vehiculos que salen invisible y a mi me gustaria que se vieran
Код:
//--------------[Packer Script]----------------//
//---------------[By KayLuz]-------------------//
//------------------[V0.2]---------------------//
//---------------------------------------------//
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#pragma tabsize 0
new
prevcar[MAX_PLAYERS],
slots[MAX_VEHICLES][5],
veh,
string[125],
useslot,
nearest,
Float:X, Float:Y, Float:Z, Float:A;
forward GetClosestCar(playerid);
forward GetDistanceToCar(playerid,carid);
/*new InvalidVehicles[60] = { Work In Progress
403, 406, 407, 408, 409, 417, 425, 430, 431, 432, 433, 435, 437, 443, 444,
446, 447, 449, 450, 452, 453, 454, 455, 456, 457, 463, 469, 472, 473,
476, 484, 486, 487, 488, 493, 497, 511, 512, 513, 514, 515, 519, 520,
524, 532, 537, 538, 548, 553, 557, 589, 570, 578, 584, 590, 591, 592,
593, 595, 601
}*/
public GetClosestCar(playerid){ //By Darkrealm
if (!IsPlayerConnected(playerid)){
return -1;
}
new Float:prevdist = 8.000;
for (new carid = 0; carid < MAX_VEHICLES; carid++){
if(!IsVehicleInUse(carid)){
new Float:dist = GetDistanceToCar(playerid,carid);
if ((dist < prevdist)){
prevdist = dist;
prevcar[playerid] = carid;
}
}
}
return prevcar[playerid];
}
public GetDistanceToCar(playerid,carid){ //By Darkrealm
new Float:dis;
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(playerid)) {
return -1;
}
GetPlayerPos(playerid,x1,y1,z1);
if(!IsVehicleInUse(carid)){
GetVehiclePos(carid,x2,y2,z2);
dis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
return floatround(dis);
}else{
return 1;
}
}
IsVehicleInUse(vehicleid){
new temp;
for(new i=0;i<GetMaxPlayers();i++){
if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i)==PLAYER_STATE_DRIVER){temp++;}
}
if(temp > 0){ return true; } else return false;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
forward LoadVehicle(playerid);
public LoadVehicle(playerid)
{
veh = GetPlayerVehicleID(playerid);
nearest = GetClosestCar(playerid);
PlayerPlaySound(playerid, 1056, X, Y, Z);
if(GetVehicleModel(veh) == 443)
{
if(nearest > 0)
{
slots[veh][useslot] = nearest;
SetVehicleVirtualWorld(slots[veh][useslot], 19);
SetVehiclePos(slots[veh][useslot], 1878.3353,-1380.3011,13.5722);
SendClientMessage(playerid, 0xFF0000FF, "*Vehicle loaded on the back*");
format(string, 125, "[Vehicle Loaded] Slot Used %d | Vehicle ID: %d", useslot, slots[veh][useslot]);
SendClientMessage(playerid, 0x33CCFFFF, string);
useslot = 0;
return 1;
}
else SendClientMessage(playerid, 0xFF0000FF, "There is no vehicle close enough");
}
else SendClientMessage(playerid, 0xFF0000FF, "*You Must Be In A Packer*");return 1;
}
public OnGameModeInit()
{
print("______________Packer System V0.2 Loaded__________________");
for(new v=1;v<MAX_VEHICLES;v++)
{
slots[v][1] = -1;
slots[v][2] = -1;
slots[v][3] = -1;
slots[v][4] = -1;
}
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
COMMAND:packer(playerid, params[])
{
new packer;
GetPlayerPos(playerid, X,Y,Z);
veh = CreateVehicle(443, X+3,Y+3,Z, 0.0, 6, 6, 60000);
slots[packer][1] = -1;
slots[packer][2] = -1;
slots[packer][3] = -1;
slots[packer][4] = -1;
return 1;
}
COMMAND:loadv(playerid, params[])
{
veh = GetPlayerVehicleID(playerid);
if(GetVehicleModel(veh) == 443)
{
if(slots[veh][1] == -1)
{
useslot = 1;
SetTimerEx("LoadVehicle",2800,0,"i",playerid);
SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
return 1;
}
else if(slots[veh][2] == -1)
{
useslot = 2;
SetTimerEx("LoadVehicle",2500,0,"i",playerid);
SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
return 1;
}
else if(slots[veh][3] == -1)
{
useslot = 3;
SetTimerEx("LoadVehicle",2500,0,"i",playerid);
SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
return 1;
}
else if(slots[veh][4] == -1)
{
useslot = 4;
SetTimerEx("LoadVehicle",2500,0,"i",playerid);
SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
return 1;
}
else SendClientMessage(playerid, 0xFF0000FF, "*Packer Is Full*");
}
else SendClientMessage(playerid, 0xFF0000FF, "*You Must Be In A Packer*");return 1;
}
COMMAND:unloadv(playerid, params[])
{
new aslots;
new tmp[256];
aslots = strval(tmp);
veh = GetPlayerVehicleID(playerid);
PlayerPlaySound(playerid, 1056, X, Y, Z);
if (sscanf(params, "i", aslots)) return SendClientMessage(playerid, 0xFF0000FF, "[ERROR] Right Usage: /unload [Slot 1-4]");
if(slots[veh][aslots] >= 0)
{
format(string, 125, "[Vehicle Unloaded] Slot %d Unloaded | Vehicle ID:%d", aslots, slots[veh][aslots]);
SendClientMessage(playerid, 0x33CCFFFF, string);
GetPlayerPos(playerid, X, Y, Z);
SetVehiclePos(slots[veh][aslots], X, Y+10, Z);
GetVehicleZAngle(veh, A);
SetVehicleZAngle(slots[veh][aslots],A);
SetVehicleVirtualWorld(slots[veh][aslots], 0);
slots[veh][aslots] = -1;
return 1;
}
else SendClientMessage(playerid, 0xFF0000FF, "* There is no vehicle in that slot | Try Another *"); return 1;
}
COMMAND:vslot(playerid, params[])
{
new aslots;
new tmp[256];
aslots = strval(tmp);
veh = GetPlayerVehicleID(playerid);
if (sscanf(params, "i", aslots)) return SendClientMessage(playerid, 0xFF0000FF, "[ERROR] Right Usage: /vslot [Slot 1-4]");
if(slots[veh][aslots] >= 0)
{
format(string, 125, "[Vehicle View]Packer Slot %d Contains Vehicle ID:%d", aslots, slots[veh][aslots]);
SendClientMessage(playerid, 0x33CCFFFF, string);
return 1;
}
else SendClientMessage(playerid, 0xFF0000FF, "* There is no vehicle in that slot | Try Another *"); return 1;
}
No lo veo posible, lo que si podrias hacer es hacer un 3dtext que aparezca en cada "slot" entonces que todos aparezcan en "Vacio" y que cuando carga uno, aparezca ese slot como "Ocupado - Bullet" o algo por el estilo, espero que te sirva.