Almaz RP | Мод с нуля | >> 0.3.7 << v0.1.4

   (0 отзывов)

15 изображений

Копирование на сторонние сайты, без одобрение владельца, ЗАПРЕЩЕНО! Данный мод специально для pawno-rus.ru

 

Сливаю мод из-за того, что CRMP уже поднадоело.
Обновы возможно буду выпускать. Подумаю.

 

Версия CR-MP:                    0.3.7 С5 (2.4)

Название мода:                        Almaz RP

Командный процессор:       Pawn.CMD

База данных:                     MySQL R39-6

Основа мода:                             new.pwn

Строк в моде:                                    4716

Автор мода:                          Gromov000

 

Особенности мода:

Спойлер

[v0.0.1]

В данной версии добавлено следующее:
- Регистрация пароля
- Выбор пола
- Указ реферала
- Выбор персонажа
- Создание аккаунта в БД
- Загрузка аккаунта из БД
- Авторизация
- Команды для игроков (/menu, /me, /do, /try, /report, /n, /help, /stats)

[v0.0.2]

В данной версии коснулось системы администратора:
- Назначение на пост администратора
- Регистрация пароля администратора
- Авторизация администратора, при авторизации игрока
- Команды:
/ahelp, /acar, /givemoney, /resetmoney, /a
/admins, /setplayermoderation, /alldelcar

[v0.0.3]

- Связь с администрацией (Жалоба/Вопрос)
- Некоторые переменные перевёл в bool
- Время на авторизацию(45 секунд) и регистрация(60 секунд)
- TD: логотип, время и дату
- Найденные опечатки текста, исправлены
- Команды:
/ban, /sban, /kick, /skick
/jet(Получить/Убрать JetPack)
/freeze, /unfreez, /o, /msg
/givegun, /gm, /gps
- При авторизации был поиск пароля в строке(strfing), теперь будет сравнивание строк (strcmp)
- Дата в базу данных, теперь сохраняется в виде 00.00.0000, была в виде 0000.00.00
- Проверка на блокировку аккаунта
- Разблокировка аккаунта
- Разблокировка аккаунта по дате
- в /ban, /sban добавлено блокировка на всегда
-  Проверка заблокирован ли игрок на всегда

[v0.0.4]

- Исправлен недочёт, когда при выводе даты рядом появлялись разного рода символы
- Написан спидометр
- Система ремня безопасности.
Если ремень не пристёгнут, то при аварии у игрока убавляется Здоровье
- Стабильное Обновление спидометра (200 ms)
- Дописана статистика персонажа
- Сохранение в БД Здоровье игрока
- Вывод из БД Здоровье игрока
- Добавлены команды:
/unban, /offban
Исправлено в командах /ban и /sban, 
когда в поле кого заблокировали, указывался ник кто заблокировал
- Теперь при регистрации в админ-панели, пользоваться админ командами запрещено

[v0.0.5]    

- команды /warn, /offwarn, /unwarn, /checkwarn, /checkban, /checkstat, /profilwarn
- выдача прав лидера(/setleader /removeleader)
- проверка на транспорт (велики, мотоциклы, вертолёты)
- переписан спидометр
- Когда игрок садится в авто, ему вылазит подсказка.
- Переделаны спавны:
Южный 1-3 лвл
Батырево 4-6 лвл
Арзамас 7 и выше лвл

[v0.0.6]

- Упаковка SendClientMessage
- Команды /ivite /setrank /members /leader
- В базу Данный добавлены Название рангов организаций (Пока что УГИБДД, ПЮ, ПА, АШ)
- Добавлены так же команды для администрации
- Все инклуды перенесены в один инкул server_cs037
- Так же дефайны перенесены в один инклуд define
Найти файлы можно в корне, папке server

[v0.1.0]

- Забыл записывать обновы после v0.0.6, скажу в кратце:
Сделана проверка на все виды моделей авто
Динамичная настройка сервера (Смена название, мода, ссылки и тп.)
Исправлены ошибки
- Сделал Маппинг шахты
- Начал систему шахты. Сделано:
1) Устройство на работу
2) Завершение работы
3) Раздевалка
4) Пикапы входа/выхода 
- Загрузка:
1) Пикапов     gamemode/Other/PickUp
2) Инклудов    gamemode/server_cr037
3) Дефайны     gamemode/define
4) Маппинг     gamemode/MAP/...
5) ТекстДравы  gamemode/TextDraw/...
- Изменил [Ошибка] на [Подсказка] в командах
- Начал систему анимаций (Взял из инета)
- Доделал команды:
/allfreeze /allunfreeze /agm /aallcar /pay
/setrank /invite (Не проверял данные 2 команды на баги)
Исправил /checkstat, когда админ нажимал на кнопку CLOSE выходил в ГлМеню
- Так же добавил OnPlayerClickMap (тп, пока что без ТС)
- И ещё что сделал, не помню, брал отдых в две недели

[v0.1.1]

- Полность завершена работа над шахтой (Минус в том, что не учёл чекпоинтов, они будут проваливаться под объекты на землю, но по мне и так нормально)
- Добавлена загрузка Textur при входе в интерьер
- Анимации теперь срабатывают с первого раза, сделал загрузку библиотеке

[v0.1.2]

- Переписана команда /ahelp на диалог
- Подправил список цикл анимаций
- Теперь при разговори нельзя сбивать анимации
- АФК теперь работает корректно
- Исправил в админ командах, проверку на лвл админа по /ahelp
- Сделал внешний маппинг АШ
- Сделаны команды:
/uninvite, /r, /rb, /d, /db, /id, /gnews, /stopgnews

[v0.1.3]
- Теперь АФК работает нормально (иногда в чат выводилось -1)
- Добавлены команды /avig /unvig /auninvite

- Убрал тп по метки, добавил /afly
- Провёл оптимизацию кода (где-то 20%) 
- Добавил SendClientMessageEx с вводом доп параметров и автоматическим подсчётам стринга
- Сделана камера при регистрации/авторизации
- Добавил команду /todo
- Начал делать /sp /spoff (имеются наброски)
- Теперь пароль хешируется через SHA256_PassHash
- Исправил баг с проверкой валидности пароля, можно было бесконечно вводить пароль
- Исправил баг с анимацией при разговоре, она срабатывала, когда у игрока была вкл анимация или действие на работе.
- Начата написание системы домов
- Сделана первая версия /creating [1] 3DText [2] MapIcon [3] Object [4] House [5] Entrance [6] Business [7] Garage (Только диалог)

[v0.1.4]
- Команды перевидены с format на extract (не все в процессе)
- В системе дома сделано:
Вывод диалога по нажатию L.ALT
Сохранение
Загрузка домов
Стоимость дома по классу (Низкий: 285001 Средний: 570002 Высокий: 1140003)
Покупка дома
- Создание дома в игре команды /createhouse /hexit(позиция после выхода из интерьера)

 

PS: Разработка выполняется в свободное время и на бесплатной основе.

Название сервера Выбрано случайным образом.

Я постараюсь выпустить следующую версию как можно скорее. 

 

Копирование на сторонние сайты, без одобрение владельца, ЗАПРЕЩЕНО! Данный мод специально для pawno-rus.ru

 


 Пожаловаться



Еще файлы chel38


Обратная связь

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

    • sergeenko
      От sergeenko
      Если писать просто команду /a, то выдаёт /a [текст]
      А если написать какой-то текст то ничего не просиходит
      Код:
       
      stock SendAdminMessage(color, text[]) {     foreach(new i: Player)     {         if(PI[i][data_CADMIN] != 1||PI[i][data_ADMLVL] >= 1)         {              SendClientMessage(i, color, text);         }     }     return 1; } Команда: CMD:a(playerid, params[]) {     if(PI[playerid][data_ADMLVL] > 1)     {         new text[90];         if(sscanf(params, "s[90]", text))             return SendClientMessage(playerid, CG, "Используйте /a [текст]");         if(antiflood[playerid] > 0)              return SendClientMessage(playerid, COLOR_BLACK,"Пожалуйста, подождите пару секунд...");         antiflood[playerid]++;         if(PI[playerid][data_LOGGED] == false)              return SendClientMessage(playerid, CG, "Вы не авторизированы. Пожалуйста авторизируйтесь.");         new string[19 + (20 + (-2) + 1 + (-2)) + (MAX_PLAYER_NAME + (-2) + 3 + (-2)) + 90];         format(string, sizeof(string), "[%s #%i] %s[%i]: %s", GSName[PI[playerid][data_ADMLVL]], PI[playerid][ADMINSNUMBER], PI[playerid][data_NAME], playerid, text);         return SendAdminMessage(COLOR_BLUE, string);     }     return 1;    }  
    • sergeenko
      От sergeenko
      Как можно сделать худ, спидометр и т.д как на намальске, малиновке, и т.д. На этих проектах подключение происходит не по внешнему подключению, а по локальному (по сборке в игре). Возьмём к примеру Намальск - в сборке игры есть папка namalsk где есть hudimg.txd, в нём есть иконки, худ, спидометр, карта и т.д.
      Как это сделать? Тутора не нашёл
    • sergeenko
      От sergeenko
      Драсте, мне нужен тутор на плагин vehiclesIdFix (снятие лимитов машин), база сан андреас, а сборка крмп.
    • Vadik0
      От Vadik0
      Добрейшего дня суток!
      Я в поисках команды, для создания CRMP проекта на ПК.

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

      Что, касаемо критериев?
      1. В первую очередь, важна ваша ответственность, вежливость, коммуникабельность.
      2. Желание сделать свой вклад в будущее проекта.
      3. Ваш возраст строго 16+ (исключения возможны)
      4. Платёжеспособность (после отклика на моё предложение, я вам расскажу что и как)
      5. Наличие свободного времени (с каждым этапом развития проекта, каждый человек из команды будет само собой уделять большее количество времени)
      6. Наличие PC (не ниже среднего)
      7. Наличие Discord
      8. Наличие ВКонтакте, Telegram
      9. Наличие микрофона.

      Кого сейчас ищем?
      1. Разработчиков игры (мапперы, скриптеры, и т.д)
      2. WEB Разработчик (сделать сайт. С форумом я конечно справлюсь, но могут быть проблемы )
      3. Тестеры (нужны будут, когда будет готова игра. Пока такой потребности нет).

      Сообщество ВКонтакте уже имеется, Telegram канал тоже имеется, Discord соответственно тоже.

      Для связи со мной:
      1. ВКонтакте - ссылка на страницу (кликабельно)
      2. Telegram - ссылка на Telegram аккаунт (кликабельно)

      Попытка не пытка, попробовать всегда можно! Так или иначе, живём 1 раз. Жду всех!
    • Денис0403
      От Денис0403
      При вводе команды /fly спавнит в непонятном месте.
      Скрин: https://imgur.com/a/jOkD7sl
      cmd:fly(playerid) return SetPlayerFlyStatus(playerid, 2); #if defined _included_fly     #endinput #endif #define _included_fly static     Float:fly_x[MAX_PLAYERS],     Float:fly_y[MAX_PLAYERS],     Float:fly_z[MAX_PLAYERS],     Float:fly_a[MAX_PLAYERS],     fly_world[MAX_PLAYERS],     fly_int[MAX_PLAYERS],     bool:fly_spawn[MAX_PLAYERS],     fly_state[MAX_PLAYERS],     fly_object[MAX_PLAYERS],     fly_last_move[MAX_PLAYERS],     fly_mode[MAX_PLAYERS],     fly_last_ud[MAX_PLAYERS],     fly_last_lr[MAX_PLAYERS],     Float:fly_accelmul[MAX_PLAYERS]; enum {     CAMERA_MODE_NONE    = 0,     CAMERA_MODE_FLY     = 1,     CAMERA_MODE_REVERSE = 2 }; enum {     MOVE_FORWARD = 1,     MOVE_BACK,     MOVE_LEFT,     MOVE_RIGHT,     MOVE_FORWARD_LEFT,     MOVE_FORWARD_RIGHT,     MOVE_BACK_LEFT,     MOVE_BACK_RIGHT }; const     Float:MOVE_SPEED = 100.0,     Float:ACCEL_RATE = 0.03; public OnPlayerConnect(playerid) {     fly_x[playerid] = 0.0;     fly_y[playerid] = 0.0;     fly_z[playerid] = 0.0;     fly_a[playerid] = 0.0;     fly_world[playerid] = 0;     fly_int[playerid] = 0;     fly_state[playerid] = CAMERA_MODE_NONE;     fly_object[playerid] = -1,     bool:fly_spawn[playerid] = false;     fly_last_move[playerid] = 0;     fly_mode[playerid] = 0;     fly_last_ud[playerid] = 0;     fly_last_lr[playerid] = 0;     fly_accelmul[playerid] = 0.0;     #if defined _included_fly_OnPlayerConnect         return _included_fly_OnPlayerConnect(playerid);     #else         return 1;     #endif } #if defined _ALS_OnPlayerConnect     #undef OnPlayerConnect #else     #define _ALS_OnPlayerConnect #endif #define OnPlayerConnect _included_fly_OnPlayerConnect #if defined _included_fly_OnPlayerConnect     forward _included_fly_OnPlayerConnect(playerid); #endif stock SetPlayerFlyStatus(playerid, status = 2) {     if(status == CAMERA_MODE_FLY && fly_state[playerid] == CAMERA_MODE_FLY)         return true;     else if(status == CAMERA_MODE_NONE && fly_state[playerid] == CAMERA_MODE_NONE)         return true;     switch(status)     {         case CAMERA_MODE_NONE:         {             CancelEdit(playerid);             GetPlayerCameraPos(playerid, fly_x[playerid], fly_y[playerid], fly_z[playerid]);             TogglePlayerSpectating(playerid, false);             fly_state[playerid] = CAMERA_MODE_NONE;             fly_spawn[playerid] = true;                  }         case CAMERA_MODE_FLY:         {             GetPlayerPos(playerid, fly_x[playerid], fly_y[playerid], fly_z[playerid]);             fly_world[playerid] = GetPlayerVirtualWorld(playerid);             fly_int[playerid] = GetPlayerInterior(playerid);             GetPlayerFacingAngle(playerid, fly_a[playerid]);             fly_object[playerid] = CreatePlayerObject(playerid, 19300, fly_x[playerid], fly_y[playerid], fly_z[playerid], 0.0, 0.0, 0.0);             TogglePlayerSpectating(playerid, true);             AttachCameraToPlayerObject(playerid, fly_object[playerid]);             fly_state[playerid] = CAMERA_MODE_FLY;         }         case CAMERA_MODE_REVERSE:         {             if(fly_state[playerid] == CAMERA_MODE_NONE)                 return SetPlayerFlyStatus(playerid, CAMERA_MODE_FLY);             else                 return SetPlayerFlyStatus(playerid, CAMERA_MODE_NONE);         }         default:             return SendClientMessage(playerid, -1, "Your argument is not valid.") & 0;     }     return 1; } stock IsPlayerFlying(playerid)     return fly_state[playerid];      public OnPlayerDeath(playerid, killerid, reason) {     if(IsPlayerFlying(playerid))         SetPlayerFlyStatus(playerid, false);     #if defined _included_fly_OnPlayerDeath         return _included_fly_OnPlayerDeath(playerid, killerid, reason);     #else         return 1;     #endif } #if defined _ALS_OnPlayerDeath     #undef OnPlayerDeath #else     #define _ALS_OnPlayerDeath #endif #define OnPlayerDeath _included_fly_OnPlayerDeath #if defined _included_fly_OnPlayerDeath     forward _included_fly_OnPlayerDeath(playerid, killerid, reason); #endif public OnPlayerSpawn(playerid) {     if(fly_spawn[playerid] == true)         SetTimerEx("@OnPlayerSpawnEx", 100, false, "i", playerid);          #if defined _included_fly_OnPlayerSpawn         return _included_fly_OnPlayerSpawn(playerid);     #else         return 1;     #endif } #if defined _ALS_OnPlayerSpawn     #undef OnPlayerSpawn #else     #define _ALS_OnPlayerSpawn #endif #define OnPlayerSpawn _included_fly_OnPlayerSpawn #if defined _included_fly_OnPlayerSpawn     forward _included_fly_OnPlayerSpawn(playerid); #endif @OnPlayerSpawnEx(playerid); @OnPlayerSpawnEx(playerid) {     SetPlayerPos(playerid, fly_x[playerid], fly_y[playerid], fly_z[playerid]);     SetPlayerFacingAngle(playerid, fly_a[playerid]);     SetPlayerVirtualWorld(playerid, fly_world[playerid]);     SetPlayerInterior(playerid, fly_int[playerid]);     fly_spawn[playerid] = false;     return 1; } public OnPlayerUpdate(playerid) {     if(fly_state[playerid] == CAMERA_MODE_FLY)     {         new keys, ud, lr;         GetPlayerKeys(playerid, keys, ud, lr);                  if(fly_mode[playerid] && (GetTickCount() - fly_last_move[playerid] > 100))             MoveCamera(playerid);         if(fly_last_ud[playerid] != ud || fly_last_lr[playerid] != lr)         {             if((fly_last_ud[playerid] != 0 || fly_last_lr[playerid] != 0) && ud == 0 && lr == 0)             {                 StopPlayerObject(playerid, fly_object[playerid]);                 fly_mode[playerid] = 0;                 fly_accelmul[playerid] = 0.0;             }             else             {                 fly_mode[playerid] = GetMoveDirectionFromKeys(ud, lr);                 MoveCamera(playerid);             }         }         fly_last_ud[playerid] = ud;         fly_last_lr[playerid] = lr;         return 0;     }     #if defined _included_fly_OnPlayerUpdate         return _included_fly_OnPlayerUpdate(playerid);     #else         return 1;     #endif } #if defined _ALS_OnPlayerUpdate     #undef OnPlayerUpdate #else     #define _ALS_OnPlayerUpdate #endif #define OnPlayerUpdate _included_fly_OnPlayerUpdate #if defined _included_fly_OnPlayerUpdate     forward _included_fly_OnPlayerUpdate(playerid); #endif stock MoveCamera(playerid) {     new         Float:cam_pos_x, Float:cam_pos_y, Float:cam_pos_z,         Float:cam_front_x, Float:cam_front_y, Float:cam_front_z;              GetPlayerCameraPos(playerid, cam_pos_x, cam_pos_y, cam_pos_z);     GetPlayerCameraFrontVector(playerid, cam_front_x, cam_front_y, cam_front_z);     if(fly_accelmul[playerid] <= 1)         fly_accelmul[playerid] += ACCEL_RATE;     new         Float:speed = MOVE_SPEED * fly_accelmul[playerid],         Float:x, Float:y, Float:z;              GetNextCameraPosition(fly_mode[playerid], cam_pos_x, cam_pos_y, cam_pos_z, cam_front_x, cam_front_y, cam_front_z, x, y, z);     MovePlayerObject(playerid, fly_object[playerid], x, y, z, speed);     fly_last_move[playerid] = GetTickCount();     return 1; } stock GetNextCameraPosition     (         move_mode,         Float:cam_pos_x, Float:cam_pos_y, Float:cam_pos_z,         Float:cam_front_x, Float:cam_front_y, Float:cam_front_z,         &Float:x, &Float:y, &Float:z     ) {     new const         Float:change = 6000.0,         Float:pos_x = cam_front_x * change,         Float:pos_y = cam_front_y * change,         Float:pos_z = cam_front_z * change;     switch(move_mode)     {         case MOVE_FORWARD:         {             x = cam_pos_x + pos_x;             y = cam_pos_y + pos_y;             z = cam_pos_z + pos_z;         }         case MOVE_BACK:         {             x = cam_pos_x - pos_x;             y = cam_pos_y - pos_y;             z = cam_pos_z - pos_z;         }         case MOVE_LEFT:         {             x = cam_pos_x - pos_y;             y = cam_pos_y + pos_x;             z = cam_pos_z;         }         case MOVE_RIGHT:         {             x = cam_pos_x + pos_y;             y = cam_pos_y - pos_x;             z = cam_pos_z;         }         case MOVE_BACK_LEFT:         {             x = cam_pos_x + (-pos_x - pos_y);             y = cam_pos_y + (-pos_y + pos_x);             z = cam_pos_z - pos_z;         }         case MOVE_BACK_RIGHT:         {             x = cam_pos_x + (-pos_x + pos_y);             y = cam_pos_y + (-pos_y - pos_x);             z = cam_pos_z - pos_z;         }         case MOVE_FORWARD_LEFT:         {             x = cam_pos_x + (pos_x  - pos_y);             y = cam_pos_y + (pos_y  + pos_x);             z = cam_pos_z + pos_z;         }         case MOVE_FORWARD_RIGHT:         {             x = cam_pos_x + (pos_x  + pos_y);             y = cam_pos_y + (pos_y  - pos_x);             z = cam_pos_z + pos_z;         }     } } stock GetMoveDirectionFromKeys(ud, lr) {     new         direction = 0;     if(lr < 0)     {         if(ud < 0)             direction = MOVE_FORWARD_LEFT;         else if(ud > 0)             direction = MOVE_BACK_LEFT;         else             direction = MOVE_LEFT;     }     else if(lr > 0)     {         if(ud < 0)             direction = MOVE_FORWARD_RIGHT;         else if(ud > 0)             direction = MOVE_BACK_RIGHT;         else             direction = MOVE_RIGHT;     }     else if(ud < 0)         direction = MOVE_FORWARD;     else if(ud > 0)         direction = MOVE_BACK;     return direction; }