PDA

Просмотр полной версии : [Вопрос] баг с командой /veh



kala4iks
17.04.2015, 17:26
Скажите пожалуйста кто-то знает из-за чего может быть такое? Когда создаешь транспорт то игров выходит из за него и нужно опять садится.


CMD:veh(playerid,params[]){
if(Player[playerid][pAdmin] == 0 || AdminDuty[playerid] == 0)return NoRights;
if(sscanf(params,"d",params[0]))return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/veh [id транспорта].");
if(params[0] > 611 || params[0] < 400)return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Доступное значение транспорта от 400 до 611.");
new string[64],lights,alarm,doors,bonnet,boot,objective;
new Float:X,Float:Y,Float:Z,Float:A;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
if(CreateCar[playerid]>0)DestroyVehicle(CreateCar[playerid]);
CreateCar[playerid] = CreateVehicle(params[0],X,Y,Z,A,-1,-1,60000);
SetVehicleParamsEx(CreateCar[playerid],1,lights,alarm,doors,bonnet,boot,objective);
Engine[CreateCar[playerid]] = 1;
Doors[CreateCar[playerid]] = 1;
PutPlayerInVehicle(playerid,CreateCar[playerid],0);
new carid = GetPlayerVehicleID(playerid);
f(string,"Ты создал(а) %s (ID:%d). Удалить транспорт: /vehd.",VehiclesName[GetVehicleModel(CreateCar[playerid])-400],carid);
send(playerid,COLOR_WHITE,string);return 1;}

И еще я кое что узнал когда создал как вышел с него потом сел и допустем захотел новый кар создать создаешь и уже с кара не выходит и все нормально. это только если не в каре сидеть и создать тогда он вылезает из него.И нужно опять сесть.

kala4iks
18.04.2015, 10:09
Выручайте

Desulaid
19.04.2015, 10:20
Попробуй мой вариант, правда я не силен в командах


CMD:veh(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") == 0) return 1;
if(Player[playerid][pAdmin] == 0 || AdminDuty[playerid] == 0)return NoRights;
if(PlayerInfo[playerid][pAdmin] < 2) return 1;
if(sscanf(params,"iii",params[0],params[1],params[2])) return SendMe(playerid, COLOR_WHITE, "Использование: /veh [carid] [color 1] [color 2]");
if(params[0] < 400 || params[0] > 611) return SendMe(playerid, COLOR_GREY, "Carid от 400 до 611!");
if(params[1] < 0 || params[1] > 255) return SendMe(playerid, COLOR_GREY, "Color 1 от 0 до 255!");
if(params[2] < 0 || params[2] > 255) return SendMe(playerid, COLOR_GREY, "Color 2 от 0 до 255!");
new Float:pPos[4];
GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
CreateCar[playerid] = CreateVehicle(params[0],pPos[0],pPos[1],pPos[2],pPos[3],params[1],params[2],600000);
SetVehicleNumberPlate(carid, "ADMIN");
SetVehicleToRespawn(carid);
PutPlayerInVehicle(playerid, carid, 0);
Engine[CreateCar[playerid]] = 1;
Doors[CreateCar[playerid]] = 1;
new carid = GetPlayerVehicleID(playerid);
f(string,"Ты создал(а) %s (ID:%d). Удалить транспорт: /vehd.",VehiclesName[GetVehicleModel(CreateCar[playerid])-400],carid);
send(playerid,COLOR_WHITE,string);
return 1;
}

kala4iks
19.04.2015, 15:14
Попробуй мой вариант, правда я не силен в командах


CMD:veh(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") == 0) return 1;
if(Player[playerid][pAdmin] == 0 || AdminDuty[playerid] == 0)return NoRights;
if(PlayerInfo[playerid][pAdmin] < 2) return 1;
if(sscanf(params,"iii",params[0],params[1],params[2])) return SendMe(playerid, COLOR_WHITE, "Использование: /veh [carid] [color 1] [color 2]");
if(params[0] < 400 || params[0] > 611) return SendMe(playerid, COLOR_GREY, "Carid от 400 до 611!");
if(params[1] < 0 || params[1] > 255) return SendMe(playerid, COLOR_GREY, "Color 1 от 0 до 255!");
if(params[2] < 0 || params[2] > 255) return SendMe(playerid, COLOR_GREY, "Color 2 от 0 до 255!");
new Float:pPos[4];
GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
CreateCar[playerid] = CreateVehicle(params[0],pPos[0],pPos[1],pPos[2],pPos[3],params[1],params[2],600000);
SetVehicleNumberPlate(carid, "ADMIN");
SetVehicleToRespawn(carid);
PutPlayerInVehicle(playerid, carid, 0);
Engine[CreateCar[playerid]] = 1;
Doors[CreateCar[playerid]] = 1;
new carid = GetPlayerVehicleID(playerid);
f(string,"Ты создал(а) %s (ID:%d). Удалить транспорт: /vehd.",VehiclesName[GetVehicleModel(CreateCar[playerid])-400],carid);
send(playerid,COLOR_WHITE,string);
return 1;
}


Не помогло все равно вылезает из кара.

Daniel_Cortez
19.04.2015, 22:22
И еще я кое что узнал когда создал как вышел с него потом сел и допустем захотел новый кар создать создаешь и уже с кара не выходит и все нормально. это только если не в каре сидеть и создать тогда он вылезает из него.И нужно опять сесть.
Советую проверить код в коллбэке OnPlayerStateChange. Возможно, где-то в нём вызывается RemovePlayerFromVehicle.

kala4iks
21.04.2015, 09:56
Советую проверить код в коллбэке OnPlayerStateChange. Возможно, где-то в нём вызывается RemovePlayerFromVehicle.

Нету там есть только в командах

kala4iks
21.04.2015, 14:07
Может что то тут сробатывает?


public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(IsPlayerNPC(playerid)) return 1;
new string[100];
new newcar = GetPlayerVehicleID(playerid);
new Float:slx, Float:sly, Float:slz;
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER){
switch(GetPlayerWeapon(playerid)){
case 29,32: { }
default:SetPlayerArmedWeapon(playerid,0);}}
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) PlayAudioStreamForPlayer(playerid, "Чтобы включить радио в транспорте нажми кнопку \"R\", чтобы отключить сообщения подобного рода введи \"/audiomsg\".");
if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) StopAudioStreamForPlayer(playerid);
if(newstate == PLAYER_STATE_DRIVER)
{
new model = GetPlayerVehicleSeat(playerid);
if(model != 128)
{
if(!model)
{
model = GetVehicleModel(GetPlayerVehicleID(playerid));
if(!(400 <= model <= 611) || MaxPassengers[model - 400 >>> 3] >>> ((model - 400 & 7) << 2) & 0xF == 15) return Kick(playerid);
}
else return Kick(playerid);
}
TeleportTime[playerid] = 10;
if(TaxiDuty[playerid] > 0)
{
if(TaxiDuty[playerid] == 1)
{
TaxiDrivers -= 1;
}
TaxiDuty[playerid] = 0;
format(string, sizeof(string), " Вы теперь не на дежурстве и заработали $%d.", TransportCost[playerid]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
GivePlayerKapusta(playerid, TransportCost[playerid]);
TransportCost[playerid] = 0;
}
if(TransportCost[playerid] > 0 && TransportDriver[playerid] < 999)
{
if(IsPlayerConnected(TransportDriver[playerid]))
{
TransportTime[TransportDriver[playerid]] = 0;
TransportCost[TransportDriver[playerid]] += TransportCost[playerid];
format(string, sizeof(string), "~w~The ride cost~n~~r~$%d",TransportCost[playerid]);
GameTextForPlayer(playerid, string, 5000, 1);
format(string, sizeof(string), "~w~Passenger left the car~n~~g~Earned $%d",TransportCost[playerid]);
GameTextForPlayer(TransportDriver[playerid], string, 5000, 1);
GivePlayerKapusta(playerid, -TransportCost[playerid]);
TransportCost[playerid] = 0;
TransportTime[playerid] = 0;
TransportDriver[playerid] = 999;
TaxiAccepted[playerid] = 999;
}
}
}
if(newstate == PLAYER_STATE_DRIVER)
{
new engine,lights,alarm,doors,bonnet,boot,objective;
if(Engine[GetPlayerVehicleID(playerid)] == 0 && !IsAVelo(GetPlayerVehicleID(playerid)))
{
TextDrawSetString(Mission,"~w~ *a›Їњ¦e ~g~ЊPOЂE‡,~n~ ~w~¤¦o—Ё џaўec¦њ љўњ™a¦eћ©");
TextDrawShowForPlayer(playerid, Mission);
}
if(IsAVelo(GetPlayerVehicleID(playerid)))
{
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,alarm,doors,bonnet,boot,objective);
}
new veh = GetPlayerVehicleID(playerid);
//------------------------------------------------------------------------------
LasDriver[newcar] = playerid;
//------------------------------------------------------------------------------

kala4iks
24.04.2015, 16:28
Help

kala4iks
26.04.2015, 17:14
Ну помогите кто знает...

kala4iks
28.04.2015, 18:30
Жесть не кто помочь не может

kala4iks
30.04.2015, 12:20
Help

Desulaid
30.04.2015, 14:42
Карочи, работает от лени =)



CMD:veh(playerid,params[]){
if(Player[playerid][pAdmin] == 0 || AdminDuty[playerid] == 0)return NoRights;
if(sscanf(params,"d",params[0]))return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/veh [id транспорта].");
if(params[0] > 611 || params[0] < 400)return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Доступное значение транспорта от 400 до 611.");
new string[64],lights,alarm,doors,bonnet,boot,objective;
new Float:X,Float:Y,Float:Z,Float:A;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
if(CreateCar[playerid]>0)DestroyVehicle(CreateCar[playerid]);
CreateCar[playerid] = CreateVehicle(params[0],X,Y,Z+2,A,-1,-1,60000);
SetVehicleParamsEx(CreateCar[playerid],1,lights,alarm,doors,bonnet,boot,objective);
Engine[CreateCar[playerid]] = 1;
Doors[CreateCar[playerid]] = 1;
PutPlayerInVehicle(playerid,CreateCar[playerid],0);
new carid = GetPlayerVehicleID(playerid);
f(string,"Ты создал(а) %s (ID:%d). Удалить транспорт: /vehd.",VehiclesName[GetVehicleModel(CreateCar[playerid])-400],carid);
send(playerid,COLOR_WHITE,string);return 1;}

И по моей идее машина должна появиться рядом с игроком, который создал авто. Так сказать переступим через баг :D

kala4iks
30.04.2015, 21:29
Карочи, работает от лени =)



CMD:veh(playerid,params[]){
if(Player[playerid][pAdmin] == 0 || AdminDuty[playerid] == 0)return NoRights;
if(sscanf(params,"d",params[0]))return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/veh [id транспорта].");
if(params[0] > 611 || params[0] < 400)return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Доступное значение транспорта от 400 до 611.");
new string[64],lights,alarm,doors,bonnet,boot,objective;
new Float:X,Float:Y,Float:Z,Float:A;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
if(CreateCar[playerid]>0)DestroyVehicle(CreateCar[playerid]);
CreateCar[playerid] = CreateVehicle(params[0],X,Y,Z+2,A,-1,-1,60000);
SetVehicleParamsEx(CreateCar[playerid],1,lights,alarm,doors,bonnet,boot,objective);
Engine[CreateCar[playerid]] = 1;
Doors[CreateCar[playerid]] = 1;
PutPlayerInVehicle(playerid,CreateCar[playerid],0);
new carid = GetPlayerVehicleID(playerid);
f(string,"Ты создал(а) %s (ID:%d). Удалить транспорт: /vehd.",VehiclesName[GetVehicleModel(CreateCar[playerid])-400],carid);
send(playerid,COLOR_WHITE,string);return 1;}

И по моей идее машина должна появиться рядом с игроком, который создал авто. Так сказать переступим через баг :D

Ну так то да баг исчезает но мне надо чтоб именно в каре сидеть при создании и не выкидивало.

Desulaid
30.04.2015, 22:09
Ну так то да баг исчезает но мне надо чтоб именно в каре сидеть при создании и не выкидивало.

А как такой вариант?

CMD:veh(playerid,params[]){
if(Player[playerid][pAdmin] == 0 || AdminDuty[playerid] == 0)return NoRights;
if(sscanf(params,"d",params[0]))return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/veh [id транспорта].");
if(params[0] > 611 || params[0] < 400)return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Доступное значение транспорта от 400 до 611.");
new string[64],lights,alarm,doors,bonnet,boot,objective;
new Float:X,Float:Y,Float:Z,Float:A;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
if(CreateCar[playerid]>0)DestroyVehicle(CreateCar[playerid]);
CreateCar[playerid] = CreateVehicle(params[0],X,Y,Z+2,A,-1,-1,60000);
SetVehicleParamsEx(CreateCar[playerid],1,lights,alarm,doors,bonnet,boot,objective);
Engine[CreateCar[playerid]] = 1;
Doors[CreateCar[playerid]] = 1;
new carid = GetPlayerVehicleID(playerid);
PutPlayerInVehicle(playerid,carid,0);
f(string,"Ты создал(а) %s (ID:%d). Удалить транспорт: /vehd.",VehiclesName[GetVehicleModel(CreateCar[playerid])-400],carid);
send(playerid,COLOR_WHITE,string);return 1;}

Valera_Trefilov
08.05.2015, 20:43
сделай вот так:




CMD:veh(playerid, params[])
{
if(sscanf(params,"iii",params[0],params[1],params[2])) return true;
CreatePlayerVehicle(playerid,params[0],params[1],params[2]);
}

CreatePlayerVehicle(playerid,model,color1,color2)
{
new Float:_pos[3];
GetPlayerPos(playerid,_pos[0],_pos[1],_pos[2]);
CreateVehicle(model,_pos[0],_pos[1],_pos[2],0.0,color1,color2);
}