Вопросы

Tookie Johnson
Активный

Здравствуйте. Делаю фулл рп мод с нуля. Не подскажете как сделать автоматическое удаление незанятого транспорта с сервера с сообщением «Весь незанятый транспорт был автоматически удалён с сервера»?

Поделиться сообщением


Ссылка на сообщение

10 ответов на этот вопрос

  • 1
Cawfee
Великий Гуру

@Tookie Johnson,

 

  открыть спойлер

 

Поделиться сообщением


Ссылка на сообщение
  • 0
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@Cawfee, не вижу смысла расписывать каждое условие, если его можно совместить в одно. Так же, не вижу смысла приравнивать новую переменную к нулю, когда она и так равна нулю. В целом, оба варианта рабочие.

stock DestroyUnoccupiedVehicles() {
    for (new vehicleID = 1; vehicleID <= GetVehiclePoolSize(); vehicleID++) {
        if(IsValidVehicle(vehicleID) && !IsVehicleOccupied(vehicleID)) // если транспортное средство не существует и не занято
            DestroyVehicle(vehicleID); // уничтожаем незанятое транспортное средство
        else
            continue;
    }
}

Да и в цикле вместо MAX_PLAYERS будет разумнее использовать функцию GetPlayerPoolSize:

stock bool:IsVehicleOccupied(vehicleid) {
    for (new i; i <= GetPlayerPoolSize(); i++) {
        if(!IsPlayerConnected(i))
            continue;

        new const vehicleID = GetPlayerVehicleID(playerid);
        if(vehicleID == INVALID_VEHICLE_ID)
            continue;

        return true;
    }
    return false;
}

 

P.S: обновил код функции DestroyUnoccupiedVehicles.

Отредактировано пользователем 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.

Поделиться сообщением


Ссылка на сообщение
  • 0

Кажется, что IsVehicleOccupied не совсем правильно написана, она не использует переданный ей аргумент vehicleid

Вроде так правильно будет 

stock bool:IsVehicleOccupied(vehicleId) {
    for (new i; i <= GetPlayerPoolSize(); i++) {
        if(!IsPlayerConnected(i))
            continue;

        new const playerVehicleId = GetPlayerVehicleID(playerid);
        if(playerVehicleId == INVALID_VEHICLE_ID || playerVehicleId != vehicleId)
            continue;

        return true;
    }
    return false;
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@DEST, двоякая ситуация. Тут либо делать проверку на одно авто с передаваемым параметром, либо делать на все сразу. Если учитывать задачу, для которой она требуется, тогда лучше сделать функцию с передаваемым параметром. К тому же, функция неверна.

Более оптимизированный вариант. В данном варианте избегаем двух проверок: 1. IsPlayerInAnyVehicle; 2. GetPlayerVehicleID;

stock bool:IsVehicleOccupied(vehicleid) {
    for(new i; i <= GetPlayerPoolSize(); i++) {
        if(!IsPlayerConnected(i))
            continue;

        if(vehicleid == INVALID_VEHICLE_ID)
            continue;

        if(IsPlayerInVehicle(i, vehicleid))
            continue;
        
        return true;
    }
    return false;
}

 

Отредактировано пользователем 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.

Поделиться сообщением


Ссылка на сообщение
  • 0
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev
  В 2/15/2024 в 15:19, Cawfee сказал:

Вот только к стилю не хватало придираться.

Читать далее...  

Я не придираюсь к твоему стилю. Вопрос в удобстве и в кол-ве используемых строк. Как твой, так и мой вариант будет рабочим. Я повидал достаточно кода, чтобы не судить других за стиль написания. Не знаю, почему ты принимаешь мои слова на свой счёт.

Поделиться сообщением


Ссылка на сообщение
  • 0
  В 2/15/2024 в 15:16, 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧. сказал:

Если учитывать задачу, для которой она требуется, тогда лучше сделать функцию с передаваемым параметром

Читать далее...  

Тут не соглашусь, все же функция не должна зависеть от места вызова. Т.е. я должен иметь возможность воспользоваться этой функцией из любого места в проекте, и не должно быть разницы в ее работе. Не всегда, конечно, так получается, но к этому определенно нужно стремиться. 

 

По названию этой функции можно сказать, что она возвращает true, если авто занято кем-либо, и false, если нет. Не понял что ты поменял, функция IsPlayerInVehicle и GetPlayerVehicleID имеют скорее всего одинаковую скорость работы, т.к. обращаются к одним и тем же данным. Просто одна возвращает bool, а другая - ID машины. 

 

  В 2/15/2024 в 15:22, 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧. сказал:

Не знаю, почему ты принимаешь мои слова на свой счёт

Читать далее...  

Так ты в начале сообщения его тегнул, на чей счет это можно еще принять? :bk:

Поделиться сообщением


Ссылка на сообщение
  • 0
Tookie Johnson
Активный

Ребят, спасибо вам за помощь. Сейчас буду пробовать ваши коды. Как остановлюсь на рабочем - напишу и закроете тему.

Поделиться сообщением


Ссылка на сообщение
  • -1
Cawfee
Великий Гуру

@𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.,

 

  В 2/15/2024 в 10:19, 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧. сказал:

не вижу смысла расписывать каждое условие, если его можно совместить в одно

Читать далее...  

Вот только к стилю не хватало придираться. Всегда пишу в таком стиле. Далее фрагмент из рабочего проекта, чтоб уж совсем добить твои глаза.

 

  открыть спойлер

 

  В 2/15/2024 в 10:19, 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧. сказал:

Так же, не вижу смысла приравнивать новую переменную к нулю, когда она и так равна нулю

Читать далее...  

Жертва языков с автоматическим управлением памятью... С меня не будет от того, что лишний раз явно инициализирую переменную.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • grizly57a
      От grizly57a
      вот логи 
       
       
      ---------- Loaded log file: "server_log.txt". ---------- SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [16:41:25] [16:41:25] Server Plugins [16:41:25] -------------- [16:41:25] Loading plugin: crashdetect.so [16:41:25] CrashDetect plugin 4.19.4 [16:41:25] Loaded. [16:41:25] Loading plugin: pawncmd.so [16:41:25] Pawn.CMD plugin v3.2.0 by urShadow has been loaded [16:41:25] Loaded. [16:41:25] Loading plugin: pawnraknet.so [16:41:25] [Pawn.RakNet] plugin v1.6.0 loading... [16:41:25] [Pawn.RakNet] | Pawn.RakNet 1.6.0 | 2016 - 2023 |-------------------------------- | Author and maintainer: katursis | Compiled: Feb 12 2023 at 19:35:06 |-------------------------------------------------------------- | Repository: https://github.com/katursis/Pawn.RakNet |-------------------------------------------------------------- | Wiki: https://github.com/katursis/Pawn.RakNet/wiki [16:41:25] Loaded. [16:41:25] Loading plugin: sscanf.so [16:41:25] [16:41:25] =============================== [16:41:25] sscanf plugin loaded. [16:41:25] Version: 2.8.3 [16:41:25] (c) 2018 Alex "Y_Less" Cole [16:41:25] =============================== [16:41:25] Loaded. [16:41:25] Loading plugin: streamer.so [16:41:25] *** Streamer Plugin v2.9.4 by Incognito loaded *** [16:41:25] Loaded. [16:41:25] Loading plugin: mysql_static.so [16:41:25] >> plugin.mysql: R39-6 successfully loaded. [16:41:25] Loaded. [16:41:25] Loading plugin: TOTP.so [16:41:25] TOTP plugin v1.0.1 by Games loaded. [16:41:25] Loaded. [16:41:25] Loading plugin: profiler.so [16:41:25] Profiler plugin 2.15.1 [16:41:25] Loaded. [16:41:25] Loading plugin: timerfix.so [16:41:25] >> TimerFix v1.5 successfully loaded. [16:41:25] Loaded. [16:41:25] Loading plugin: UTuning.so [16:41:25] Loaded. [16:41:25] Loading plugin: housecar.so [16:41:25] Loaded. [16:41:25] Loading plugin: TOTP.so [16:41:25] TOTP plugin v1.0.1 by Games loaded. [16:41:25] Loaded. [16:41:25] Loading plugin: FCNPC.so [16:41:25] [16:41:25] ------------------------------------------------- [16:41:25] FCNPC - Fully Controllable NPC v2.0.9 [16:41:25] GNU/Linux SA-MP 0.3.7 R2 [16:41:25] Apr 17 2024 at 09:11:36 [16:41:25] [16:41:25] Author: OrMisicL (2013 - 2015) [16:41:25] Continued by: ziggi (2016 - present) [16:41:25] [16:41:25] See full credits in the README.md file [16:41:25] ------------------------------------------------- [16:41:25] [16:41:25] Loading... [16:41:25] [16:41:25] ------------------------------------------------- [16:41:25] ColAndreasv1.4.0 [16:41:25] [16:41:25] Created By: [16:41:25] [uL]Chris42O [16:41:25] [uL]Slice [16:41:25] [uL]Pottus [16:41:25] ------------------------------------------------- [16:41:25] [16:41:25] Loading... [16:41:25] ColAndreas v1.4.0 Loaded. [16:41:25] Loaded. [16:41:25] Loaded 13 plugins. [16:41:25] [16:41:25] Filterscripts [16:41:25] --------------- [16:41:25] Loading filterscript 'voice.amx'... [16:41:25] No collision data found. [16:41:25] [FCNPC] Warning: Unable to create NPCs. The maxnpc limit in server.cfg is 0. [16:41:25] -------------------------------------- [16:41:25] VOICE COPY RADMIR BY ������ dev. [16:41:25] -------------------------------------- [16:41:25] Loaded 1 filterscripts. [16:41:25] *** Streamer Plugin: Include file version (0x295) does not match plugin version (0x294) (script might need to be recompiled with the correct include file). [16:41:25] ------------------------------------------ [16:41:25] SSSS [16:41:25] ------------------------------------------ [16:41:25] mapname = "San Andreas" (string) [16:41:25] [Vehicle]: ��� ������������ �������� ������� [16:41:25] [TP]: ��� �����/������ ������� [16:41:25] [ATM]: ��� ��������� ������� [16:41:25] ����������� � ���� ������ �� ������� [������� � ����� ������ ����������] [16:41:25] ----------------------------------------- [16:41:25] [16:41:25] [16:41:25] [16:41:25] ----------------------------------------- [16:41:25] Number of vehicle models: 55 [16:42:00] [connection] 93.159.241.195:2395 requests connection cookie. [16:42:01] [connection] incoming connection: 93.159.241.195:2395 id: 0 [16:42:02] [join] Dkak_wlaas has joined the server (0:93.159.241.195) [16:42:02] [part] Dkak_wlaas has left the server (0:2)
    • vicegame
      От vicegame
      Доброго времени суток уважаемые форумчане
      Хочу представить наши услуги и цены:
      GTA SAMP от 75руб
      GTA CRMP от 75 руб
      GTA MTA от 120 руб
      Для каждого тарифа неограниченные слоты, оплата только за ресурсы 
      Удобная панель управления и широкий функционал 
      Работаем с 2023 года!
       
      Также имеются БЕСПЛАТНЫЕ тарифы для (ознакомительных целей)
       
      Мощные процессоры Ryzen 5950X (Германия)
       
      Платежная система YooKassa на борту:
      Банковские карты
      SberPay
      TinkoffPay
      Yoomoney

      Ссылка на хостинг: ТЫК
    • hatriyikko
      От hatriyikko
      Требуется мобильная сборка мод + клиент + лаунчер

      Копия Радмира, Блэк Раши или что-то другое с аналогичным функционалом. Основной упор на бизнесы, чтобы всё исправно работало
       
      Напишите сколько это будет стоить?

      В дальнейшем также могут понадобиться какие то доработки мода, если всё ок рассматриваю долгосрочное сотрудничество

      Связь тут или в тг @kovart7