Проподают машины
#1

Здравствуйте!
Возникла проблема с машинами т.е когда игрок создает машину себе то иногда у другого игрока она забирается
но это очень редко, а когда онлайн высокий то часто
вот так создаю:
PHP код:
new ta4ka[MAX_PLAYERS];
new 
ta4katest[MAX_PLAYERS]; 
вот создаю машину
PHP код:
if(ta4katest[playerid] == 1)DestroyVehicle(ta4ka[playerid]);
            
ta4ka[playerid] = CreateVehicle(idok,X,Y,Z,Angle,random(250),random(250),50000);
            if(
GetPlayerInterior(playerid)) LinkVehicleToInterior(ta4ka[playerid],GetPlayerInterior(playerid));
            
SetVehicleVirtualWorld(ta4ka[playerid],GetPlayerVirtualWorld(playerid));
            
PutPlayerInVehicle(playerid,ta4ka[playerid],0);
            
ta4katest[playerid] = 1
При дисконекте удаляю
PHP код:
if(ta4katest[playerid] == 1)DestroyVehicle(ta4ka[playerid]); 
В чем проблема?
Reply
#2

При дисконнекте удаляете, но не обнуляете эти обе переменные. И вообще, тут и одной переменной хватит, это раз, а во-вторых, я бы посоветовал нормально называть их
Reply
#3

Quote:
Originally Posted by DartfoL
Посмотреть сообщение
При дисконнекте удаляете, но не обнуляете эти обе переменные. И вообще, тут и одной переменной хватит, это раз, а во-вторых, я бы посоветовал нормально называть их
Та это для теста пока что... как удалять я не понял

DestroyVehicle(ta4katest[playerid]);?
Reply
#4

Сделал так
PHP код:
new ta4ka[PLAYERS];
new 
ta4katest
дисконект
PHP код:
DestroyVehicle(ta4ka[playerid]);
        
ta4katest -=1
создание
PHP код:
DestroyVehicle(ta4ka[playerid]);
            
ta4ka[playerid] = CreateVehicle(idok,X,Y,Z,Angle,random(250),random(250),50000);
            
ta4katest ta4ka[playerid];
            
//    Fuell[caridhouse[playerid]] = PlayerInfo[playerid][pFuelcar];
            
ta4katest ++; 
Правильно? или еще перд созданием сделать
PHP код:
 ta4katest -=1
?

Или как вы сказали с одной переменной
PHP код:
DestroyVehicle(ta4ka[playerid]);
            
ta4ka[playerid] = CreateVehicle(idok,X,Y,Z,Angle,random(250),random(250),50000); 
Reply
#5

pawn Код:
new vehicle_id[MAX_PLAYERS];
 
//или сразу инициализируем каждую ячейку (тогда при коннекте можно опустить присваивание)
new vehicle_id[MAX_PLAYERS] = { INVALID_VEHICLE_ID, ... };
 
// Создает транспорт для игрока
create_player_vehicle(playerid)
{  
    // Если транспорт уже создан
    if(vehicle_id[playerid] != INVALID_VEHICLE_ID)
    {
        DestroyVehicle(vehicle_id[playerid]);
    }
    vehicle_id[playerid] = CreateVehicle(idok, X, Y, Z, Angle, random(250), random(250), 50000);
   
    if(GetPlayerInterior(playerid))
    {
        LinkVehicleToInterior(vehicle_id[playerid], GetPlayerInterior(playerid));
    }
    SetVehicleVirtualWorld(vehicle_id[playerid], GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid, vehicle_id[playerid], 0);
}
 
public OnPlayerConnect(playerid)
{
    vehicle_id[playerid] = INVALID_VEHICLE_ID;
    return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
    // Если транспорт был создан
    if(vehicle_id[playerid] != INVALID_VEHICLE_ID)
    {
        DestroyVehicle(vehicle_id[playerid]);
    }
    vehicle_id[playerid] = INVALID_VEHICLE_ID;
    return 1;
}
Reply
#6

Спасибо, попробую
Reply
#7

Проблема не решилась :/
Reply
#8

Quote:
Originally Posted by Kuroki
Посмотреть сообщение
Проблема не решилась :/
код который выше - рабочий
Значит в чем то другом еще причина, где то еще тачки создаются/удаляются
Reply
#9

Quote:
Originally Posted by Jon_De
Посмотреть сообщение
код который выше - рабочий
Значит в чем то другом еще причина, где то еще тачки создаются/удаляются
А причина проблемы какая то? переполнение?
Reply
#10

Quote:
Originally Posted by Kuroki
Посмотреть сообщение
А причина проблемы какая то? переполнение?
что за переполнение, не понял.
ищи где ещё в моде у тебя есть CreateVehicle, DestroyVehicle, проведи дебаг
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)