Доработка мода Samp-Rp

В теме 7 сообщений

Illya_Zaxatniy
Новичок

Доработка мода Samp-Rp

Скачать файл

Привет, у меня давно валяется данный мод который дорабатывался мною в 22  году, решил его выставить на продажу, поскольку деньги - не лишние.

 

Ниже прикрепляю лог доработок а также айпи адрес для теста

также к моду(после приобретения) прилагается список багов, найденных, они не значительные но имеются

 

лог доработок: 

1. Вырезана /alevel
2. Теперь чат администрации для всех общий
3. Вырезана команда /serverbonus
4. Теперь администрация от 8 уровня не отображается в /admins и при авторизации в панели администратора
5. Убрал бонус
6. Теперь при авторизации в панели администратора не пишет что ввёл неверный пароль
7. Переписал регистрацию
8. Теперь проверка на блокировку идёт при заходе на сервер, не после ввода пароля
9. Переписал авторизацию
10. Адрес электронной почты при регистрации теперь проверяется по всем параметрам
11. Реферальная система при регистрации теперь проверяет ник или промокод
12. Сделал выбор скинов на текстдравах
13. Переписал /makeleader в диалог (+ теперь выдаются женские скины)
14. Вырезана /fractionid
15. Вырезан ограничитель скорости
16. Теперь при выдаче предупреждения или бане указывается фракция и ранг игрока (Если он состоит в организации)
17. Теперь командой /spawn можно спавнить других игроков
18. Отредактирована команда /recon
19. Вырезан анти-БХ
20. Переписана команда /invite (+ добавлены женские скины)
21. Из главного меню вырезана система слива денег
22. Сделана система телепорта по метке на карте для администрации
23. Переписал систему навигатора (/gps)
24. Переписал /tp (Теперь он работает через навигатор)
25. /mute теперь выдаётся по минутам
26. Добавил команду /tmute для администрации с 1 уровня - просмотр времени до снятия мута у игрока
27. Изменена команда /pm
28. Для начала гонок и пейнтбола теперь достаточно 2 участников
29. Убрана команда ахелп, будет написана новая
30. Теперь в команде присон надо указывать причину
31. Добавлена команда /forum для оповещения об открытия заявок на лидерство на форуме
32. Новый логотип
33. Добавлена команда /rmute для выдачи бана репорта
34. Написана система для тестеров
 
 
АЙПИ ДЛЯ ТЕСТА И ПАРОЛЬ:
IP 195.18.27.226:1235
PASSWORD : 1
 
ДЛЯ СВЯЗИ ВК: https://vk.com/iilyazaxodnoy
 
 
 

  • Добавил
  • Добавлено
    30.12.2024
  • Категория
  • Автор
    @illyazaxodnoy

 

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


Ссылка на сообщение
Поделиться на другие сайты
sinvays
Завсегдатый

Для интереса зашёл на сервер, честно скажу, вообще не стоит свои 600 рублей - ему максимум дать 250 рублей и не более.

Переписал регистрацию, переписал авторизацию - в чём? Цвета поменял? Прекрасно ты переписал если честно. 

Делайте выводы сами, но я бы не стал тратить 600 рублей на это.

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


Ссылка на сообщение
Поделиться на другие сайты
  В 1/4/2025 в 22:48, angel_sinvays сказал:

Для интереса зашёл на сервер, честно скажу, вообще не стоит свои 600 рублей - ему максимум дать 250 рублей и не более.

Переписал регистрацию, переписал авторизацию - в чём? Цвета поменял? Прекрасно ты переписал если честно. 

Делайте выводы сами, но я бы не стал тратить 600 рублей на это.

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

 

Очень интересно сделаны выводы. На основе чего? С таких цен в 2025 году максимально смешно в принципе. Цены ну никак не 2025 года в принципе, а условного 2011 года. Какие бы цены не были, продавец в праве установить любую цену на товар, а покупатель сам решает покупать ему или нет. И помним. Спрос - рождает предложение. Ровно как и наоборот.

Отредактировано пользователем Web

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


Ссылка на сообщение
Поделиться на другие сайты
sinvays
Завсегдатый

@Web Продавец в праве устанавливать любую цену, а покупатель решает, покупать или нет — с этим, безусловно, сложно спорить, но когда речь идёт о товаре, который по сути представляет собой добавление команд, вырезки и якобы переписка регистрации - говорить о цене в 600 рублей уже как минимум смешно. Цена должна соотноситься с качеством, а здесь этого явно не видно. Да, спрос рождает предложение, но это работает, когда предложение действительно имеет какую-то ценность. В данном случае это больше похоже на попытку продать сомнительный продукт, завышая его стоимость без реального основания. Я же хочу не просто 'покритиковать' цену, а предупредить людей, чтобы они были бдительны и не тратили свои деньги на сомнительный игровой мод который никак не оправдывает свою стоимость.

Отредактировано пользователем angel_sinvays

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


Ссылка на сообщение
Поделиться на другие сайты
  В 1/5/2025 в 16:18, angel_sinvays сказал:

@Web Продавец в праве устанавливать любую цену, а покупатель решает, покупать или нет — с этим, безусловно, сложно спорить, но когда речь идёт о товаре, который по сути представляет собой добавление команд, вырезки и якобы переписка регистрации - говорить о цене в 600 рублей уже как минимум смешно. Цена должна соотноситься с качеством, а здесь этого явно не видно. Да, спрос рождает предложение, но это работает, когда предложение действительно имеет какую-то ценность. В данном случае это больше похоже на попытку продать сомнительный продукт, завышая его стоимость без реального основания. Я же хочу не просто 'покритиковать' цену, а предупредить людей, чтобы они были бдительны и не тратили свои деньги на сомнительный игровой мод который никак не оправдывает свою стоимость.

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

 

даже если это вырезка, это время. Время - деньги. Повторюсь. Обе предложенные цены - смешны на сегодняшний день в принципе.

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


Ссылка на сообщение
Поделиться на другие сайты
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@angel_sinvays 
- Здравствуйте. Сколько будет стоить система регистрации?
- Здравствуйте. 1.200 рублей.
- Ну нет, цена максимум 600 рублей.

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
Доналдо Фарекелка
Активный

На форуме много таких доработок, которые выставлены на продажу, а иногда и просто слитые моды выставляют на продажу. Чего тут-то к человеку докопались? ¬¬

Он ведь просто дорабатывал мод(Если судить повыше сказанному) и выставил цену, которую посчитал нужной. Можно лишь было написать просьбу о снижении цены, а не критиковать его, не знаю какую работу он проделал(Тем более может это новичок?).

Да и покупать или нет - дело покупателя.


@Illya_Zaxatniy Возможно проделанной работы и вправду мало для кого-то, но за работу и как минимум за тест сервер, который обычно никто не делает, поставил похвалу
 

Отредактировано пользователем Доналдо Фарекелка

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

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

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

    • Adam_Mafia
      От Adam_Mafia
      Здраствуйте, у меня такая проблема скачал я мап едитор начал делать мапинг удалив обьекты а они не отображаются в Shoe Code. Можно ли как то сделать чтоб там отоброались удаленые обькты. Просто помню раньше было а тут скачал и нет
       

    • deltaSpeed
      От deltaSpeed
      Нужен готовый или кастомный лаунчер SAMP Mobile для Android.
      Поддержка автообновления, загрузки ресурсов, и входа на мой сервер.
      Пишите в ЛС или в Discord: @ndp3042
       
    • Sloni_Xa
      От Sloni_Xa
      GOOD ROLE PLAY — ТВОЙ НОВЫЙ МИР В SA-MP!

      IP: 217.106.106.44:7777
      P: 217.106.106.44:7777
      P: 217.106.106.44:7777

      Приветствую, друзья!
      Добро пожаловать на GOOD ROLE PLAY — проект, где твоя история и твои правила!

      Мы полностью сосредоточены на Лос-Сантосе — здесь кипит жизнь, здесь рождаются легенды! Забудь про скучные города, у нас только ЛС и только настоящее RP.

      Что тебя ждёт?
      - Выбери свою судьбу: будь полицейским, бандитом, мафиози или служи в армии — свобода выбора на максимум!
      - Огромный ассортимент стильных аксессуаров и костюмов — подчеркни свою индивидуальность и выделись из толпы.
      - Никаких ограничений и норм — играй, как хочешь, забудь про давление и подчинение. Здесь ты — хозяин своей жизни!

      Уникальная атмосфера:
      - Проект открыт для каждого — стань кем угодно: руководителем, администратором, лидером, замом, гангстером, бизнесменом, питомцем или даже читером (но лучше честным игроком).
      - Мы ждём именно тебя, чтобы вместе создавать неповторимый мир, полный драйва, эмоций и настоящего РП!

      GOOD ROLE PLAY — здесь начинается твоя легенда!
      Заходи и почувствуй настоящий вкус свободы!
      217.106.106.44:7777
       
       
    • breznov
      От breznov
      Доброго времени суток уважаемые форумчане !
      Я начинающий Pawn-кодер, немного влился в функционал, шарю за диалоги, актеров, и прочего, сейчас занялся автошколой, 
      создал актеров, добавил маппинг, добавил 1 диалог на актера встречающего игрока при входе, ну и преподавателя, вот теперь дело дошло до системы вопросов на тесте и самой практики, много думал по этому делу, думал через switch вопросы писать, потом думал через отдельные диалоги, но всё-таки не додумался, хочу попросить помощи у специалистов данного языка, с реализацией данной системы, желательно на базе MySQL, с плеча попрошу не рубить, у меня код предельно не стандартный, на примере диалогов, чтобы создать сам диалог, надо его объявить в enum dialogs, после переходить в респонс и писать кейс, начинал делать мод по урокам Леона, где 41 серия, дошел до шахты, потом стало в падлу смотреть и начал самостоятельно изучать язык, пока-что в процессе, горю огромным желанием научиться, и всё-же, прошу помощи у специалистов языка.
    • breznov
      От breznov
      Доброго времени суток уважаемые форумчане !
      Хочу попросить помощь у вас, у меня проблемы с сохранением лидерки в базу данных, код:
       
      new FactionName[32] = "Скинхеды"; new Float:FactionHQX = 123.45, Float:FactionHQY = 678.90, Float:FactionHQZ = 10.11; new FactionMembers[MAX_PLAYERS]; new FactionRank[MAX_PLAYERS]; new FactionLeader = -1; // ID лидера (-1 означает, что лидера нет) new FactionDeputy = -1; // ID заместителя (-1 означает, что заместителя нет)

       
      #define FACTION_SKINHEDS 1 #define LEADER_INFO_DIALOG 1


       
      new const FactionRankNames[][] = {     "Новичок",     "Боец",     "Стрелок",     "Головорез",     "Бригадир",     "Доверенное лицо",     "Советник",     "Заместитель",     "Консильери",     "Дон" };  
      public OnGameModeInit():

       
      public OnGameModeInit() {     ConnectMySQL();     DisableInteriorEnterExits();     EnableStuntBonusForAll(0);     SetGameModeText("Armade RP v2.0");     SendRconCommand("hostname "SERVER_NAME" by Didenko");     LoadMapping();     Iter_Clear(Admins_ITER);     Iter_Clear(Question_ITER);     actor1 = CreateActor(159, 1800.0490, 2506.0791, 15.8725, 269.5358);     ApplyActorAnimation(actor1, "PED", "ROADROSS_FEMALE", 4.1, 1, 1, 1, 0, 0);     Create3DTextLabel("{FFFFFF}Нажмите {ffff00}L.ALT{FFFFFF} чтобы начать взаимодействие", COLOR_GREEN, 1800.0490, 2506.0791, 15.8725, 10.0, 0, 1);     //======================[ Пикапы ]==================================     magazvhod1 = CreatePickup(1318, 23, 2074.3257,1838.3256,12.5391, -1);     magazvihod1 = CreatePickup(1318, 23, -25.5779,-184.9357,1003.5469, -1);     SetTimer("SecondUpdate", 1000, true);     SetTimer("MinuteUpdate", 60000, true);     LoadFactionsData(); // Загружаем данные о фракциях и лидерах     return 1; }
       
      Стоки:

       
      stock LoadFactionsData() {     print("LoadFactionsData: Starting to load factions data...");     new query[64];     format(query, sizeof(query), "SELECT id, FactionLeader FROM factions");     mysql_tquery(dbHandle, query, "LoadFactionsData_Callback");     print("LoadFactionsData: Query sent.");     return 1; } forward LoadFactionsData_Callback(MySQL:handle, Cache:result); public LoadFactionsData_Callback(MySQL:handle, Cache:result) {     new rows = cache_num_rows();     printf("LoadFactionsData_Callback: Number of rows loaded: %d", rows);     if(rows > 0)     {         for(new i = 0; i < rows; i++)         {             cache_set_result(0);             new factionID, factionLeaderID;             if (!cache_get_value_name_int(i, "id", factionID)) {                 printf("[ERROR] LoadFactionsData_Callback: Failed to get 'id' for row %d", i);                 continue; // Переходим к следующей итерации, если не удалось получить ID             }             if (!cache_get_value_name_int(i, "FactionLeader", factionLeaderID)) {                 printf("[ERROR] LoadFactionsData_Callback: Failed to get 'FactionLeader' for row %d", i);                 continue; // Переходим к следующей итерации, если не удалось получить FactionLeader             }             printf("LoadFactionsData_Callback: Row %d: factionID = %d, factionLeaderID = %d", i, factionID, factionLeaderID);             if(factionLeaderID != 0)             {                 FactionLeader = factionLeaderID;                 FactionRank[factionLeaderID] = 10;                 printf("LoadFactionsData_Callback: Setting FactionLeader to %d and rank to 10.", factionLeaderID);                 // Не вызываем здесь SetPlayerSkin, пока не подключится игрок                 //if(IsPlayerConnected(factionLeaderID))                 //{                 //    SetPlayerSkin(factionLeaderID, 115);                 //    PlayerSkin[factionLeaderID] = 115;                 //}             }         }     }     else {         print("LoadFactionsData_Callback: No factions data found in the database.");     }     return 1; } stock SetFactionLeader(playerid, targetid) {     if(player_info[playerid][ADMIN] < 5)     {         SendClientMessage(playerid, CG, "Вы не являетесь администратором!");         return 1;     }     // Убираем старого лидера     if(FactionLeader != -1)     {         FactionRank[FactionLeader] = 1; // Понижаем ранг старого лидера     }     // Назначаем нового лидера     FactionLeader = targetid;     FactionRank[targetid] = 10;     // Сохраняем ID лидера в базу данных     new query[128];     format(query, sizeof(query), "UPDATE factions SET FactionLeader = '%d' WHERE id = '1'", targetid); // Замените '1' на ID вашей фракции, если у вас их несколько     mysql_tquery(dbHandle, query);     new szString[128];     format(szString, sizeof(szString), "Игрок %s назначен лидером фракции!", targetid);     SendClientMessage(playerid, 0x00FF00AA, szString);     SendClientMessage(targetid, 0x00FF00AA, "Вы назначены лидером фракции!");     // Выдаем скин 115     SetPlayerSkin(targetid, 115);     PlayerSkin[targetid] = 115; // Обновляем массив PlayerSkin     SPD(playerid, DLG_LEADERINFO1, DIALOG_STYLE_LIST, "Информация необходимая к прочтению", "{FF0000}!!!ПРОЧИТАТЬ!!!\n{0089ff}[1]{ffffff} Команды лидера", "Выбрать", "Закрыть");     return 1; } stock SetFactionDeputy(playerid, targetid) {     // Проверка на то, является ли игрок админом     if(player_info[playerid][ADMIN] > 5)     {         SendClientMessage(playerid, CG, "Вы не являетесь администратором!");         return 1;     }     // Убираем старого заместителя     if(FactionDeputy != -1) FactionRank[FactionDeputy] = 1; // Понижаем ранг старого заместителя     // Назначаем нового заместителя     FactionDeputy = targetid;     FactionRank[targetid] = 9; // Устанавливаем ранг 9 (Консильери)     new szString[128];     format(szString, sizeof(szString), "Игрок %d назначен заместителем фракции!", targetid);     SendClientMessage(playerid, 0x00FF00AA, szString);     SendClientMessage(targetid, 0x00FF00AA, "Вы назначены заместителем фракции!");     return 1; } // Функция проверки, является ли игрок лидером stock IsPlayerLeader(playerid) {     if(playerid == FactionLeader)     {         return 1;     }     return 0; } // Функция проверки, является ли игрок заместителем stock IsPlayerDeputy(playerid) {     if(playerid == FactionDeputy)     {         return 1;     }     return 0; } // Функция вступления во фракцию stock JoinFaction(playerid, inviterid) {     // Проверяем, состоит ли игрок уже в какой-либо фракции     for(new i = 0; i < MAX_PLAYERS; i++)     {         if(FactionMembers[playerid] != 0)         {             SendClientMessage(playerid, 0xFF0000AA, "Вы уже состоите в другой фракции!");             return 1;         }     }     // Добавляем игрока во фракцию     FactionMembers[playerid] = FACTION_SKINHEDS;     FactionRank[playerid] = 1; // Рядовой (Новичок) - Устанавливаем ранг     new szString[128];     format(szString, sizeof(szString), "Вы вступили в '%s' по приглашению игрока %d!", FactionName, inviterid);     SendClientMessage(playerid, 0x00FF00AA, szString);     format(szString, sizeof(szString), "Игрок %d вступил в '%s' по вашему приглашению!", playerid, FactionName);     SendClientMessage(inviterid, 0x00FF00AA, szString);     return 1; } stock LeaveFaction(playerid) {     if(!IsPlayerInFaction(playerid, FACTION_SKINHEDS))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не состоите в этой фракции!");         return 1;     }     FactionMembers[playerid] = 0; // Обнуляем ID фракции (0 - значит, не состоит)     FactionRank[playerid] = 0;     SendClientMessage(playerid, 0x00FF00AA, "Вы покинули Семью Рейес!");     return 1; } stock GetFactionRank(playerid) {     return FactionRank[playerid]; } stock SetFactionRank(playerid, targetid, rank) {     // Проверка на то, является ли игрок лидером или заместителем     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права устанавливать ранги!");         return 1;     }     // Проверка на то, чтобы ранг не был слишком высоким     if(rank > 10 || rank < 1)     {         SendClientMessage(playerid, 0xFF0000AA, "Неверный ранг!");         return 1;     }     FactionRank[targetid] = rank;     new szString[128];     format(szString, sizeof(szString), "Вы установили ранг '%s' для игрока %d", FactionRankNames[rank - 1], targetid); // Получаем название из массива     SendClientMessage(playerid, 0x00FF00AA, szString);     format(szString, sizeof(szString), "Вам установлен ранг '%s' игроком %d", FactionRankNames[rank - 1], playerid); // Получаем название из массива     SendClientMessage(targetid, 0x00FF00AA, szString);     return 1; } // Функция проверки, состоит ли игрок во фракции stock IsPlayerInFaction(playerid, factionid) {     if(FactionMembers[playerid] == factionid)     {         return 1;     }     return 0; }
      Ну и команды естественно:

       
      // Команда для установки ранга (пример, только для лидеров) CMD:setrank(playerid, cmdtext[]) {     new targetid, rank;     if(sscanf(cmdtext, "dd", targetid, rank))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setrank [ID игрока] [Ранг]");         return 1;     }     SetFactionRank(playerid, targetid, rank);     return 1; } // Команда информации о фракции CMD:factioninfo(playerid, cmdtext[]) {     new szString[256];     format(szString, sizeof(szString), "Название: %s, Штаб-квартира: %.2f %.2f %.2f", FactionName, FactionHQX, FactionHQY, FactionHQZ);     SendClientMessage(playerid, 0x00FF00AA, szString);     return 1; } CMD:setleader(playerid, cmdtext[]) {     new targetid;     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setleader [ID игрока]");         return 1;     }     SetFactionLeader(playerid, targetid);     return 1; } CMD:setdeputy(playerid, cmdtext[]) {     new targetid;     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setdeputy [ID игрока]");         return 1;     }     SetFactionDeputy(playerid, targetid);     return 1; } // -------------------------------------------------------------------------- // Команда для приглашения игрока во фракцию (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:invite(playerid, cmdtext[]) {     new targetid;     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права приглашать игроков!");         return 1;     }     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /invite [ID игрока]");         return 1;     }     // Добавим проверку на приглашение самого себя     if(playerid == targetid)     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не можете пригласить самого себя!");         return 1;     }     JoinFaction(targetid, playerid);     return 1; } // -------------------------------------------------------------------------- // Команда для исключения игрока из фракции (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:uninvite(playerid, cmdtext[]) {     new targetid;     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права исключать игроков!");         return 1;     }     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /uninvite [ID игрока]");         return 1;     }     // Добавим проверку на исключение самого себя     if(playerid == targetid)     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не можете увольнять самого себя!");         return 1;     }     if(!IsPlayerInFaction(targetid, FACTION_SKINHEDS))     {         SendClientMessage(playerid, 0xFF0000AA, "Этот игрок не состоит в вашей фракции!");         return 1;     }     LeaveFaction(targetid);     return 1; }

      Ребят, не судите строго пожалуйста, делал с помощью ChatGPT, помогите пожалуйста сохранение лидерки и заместителя сделать