В теме 1 сообщение

GameLifeRPG
Новичок

Web-сайт: glife.myarena.ru/forum/


IP адрес: 46.174.50.42:7871
VK: [RPG] GameLife RUS | SAMP 0.3.7

4HMzdgPcb_4.jpg

Политика и экономика

xbCTBNTtgrU.jpg

Выборы в Президенты у нас проходят раз в 2-3 месяца. Большинство финансовых потоков сервера контролирует президент. Он устанавливает сумму налога с каждого игрока, он выставляет тарифы на оплату зарплат по фракциям(деньги выплачиваются из бюджета), он устанавливает сумму пособия по безработице, также он устанавливает сумму подоходный налога с владельцев бизнесов. Верховный орган может контролировать и наказывать органы исполнения. Внедрять свои законы и поправки. 

Подробно об экономике.

1. Бюджет государства. Большинство финансовых потоков сервера контролирует президент. Он устанавливает сумму налога с каждого игрока, он выставляет тарифы на оплату зарплат по фракциям(деньги выплачиваются из бюджета), он устанавливает сумму пособия по безработице, также он устанавливает сумму подоходный налога с владельцев бизнесов. Что касается тарифов: ****ы всех фракций(Полиция, ФБР, Армия, Минздрав, Мэрия, Репортеры, Автошкола) получают свою основную зарплату из бюджета а не от лидера. Чем это хорошо. Теперь нет строгого понятия в котором лидер, скажем полиции должен был выплачивать каждое воскресение зарплату 50 000 своему сотруднику с 5м рангом. Теперь все зависит напрямую от сотрудника. Если он активно участвует в деятельности фракции то он получает больше ежечасных зарплат, соответственно он богатеет быстрее чем тот кого лидер видел всего 2 раза на неделе по полчаса. Все дополнительные заработки фракций которые поступают в кассы лидер вправе делить на свое усмотрение. Будь то ежедневные премии особо отличившимся или ежемесячные крупные бонусы верным сотрудникам. 
2. Кассы фракций. Как уже было сказано выше это определенные бонусные копилки для каждой фракции сервера. Доступ к фракционной кассе имеет только лидер данной фракции. Прибыль в кассы поступает от абсолютно разных источников, например: проценты в выписанных штрафов, проценты со штрафстоянки, проценты с убийства преступника(10 звезд), проценты за лечение(у Минздрава), проценты за сдачу автотеста на водительские права(у лицензеров) 
3. Общаки банд. Пожалуй одна из самых прибыльных статей банд. В руках грамотного лидера общак становится показателем могущества. В общаки попадают срадства также от разных противозаконных дейсвий, например: грабежи людей, грабеж банка, бонусные продажи наркотиков и оружия, проценты с алкогольного транзита, проценты с транзита наркотиков, проценты с транзита оружейных заготовок итд. Грамотный лидер не станет забирать львиную долю общака в свой карман, ведь если он не делится выручкой со своими бандитами - бандиты не задержутся в такой банде, и пойдут к тому лидеру который щедро платит за работу. Такой лидер более рассудителен - прежде всего он понимает что набрав свору бандитов прибыль общака будет расти гораздо быстрее, чем если бы у него была только пара-тройка человек в составе. А раз прибыль будет расти быстрее значит и выплачивать зарплаты можно быстрее и больше! К сожалению некоторые нынешние лидеры банд до сих пор не могут понять этой простой истины и пытаются обогатиться за счет общака, что разумеется не нравится другим членам банды. 

Уникальные банды и фракции

C7HdgkHE3Ws.jpg

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

Прокачка Вашего персонажа, автомобиля и дома

7bq1bSzkbzw.jpg

У нас очень интересная система прокачки персонажа. Уникальные скиллы. От характеристик которого зависит как сложиться то или иное событие и RP ситуация.Так же есть дополнительные возможности апгрейда вашего дома и автомобиля. Примеры: Персона имея скил ловкости, может убегать от сотрудников полиции проворачивая руку в наручниках или уклоняться от удара других игроков и бросать их в нокаунт. На свой автомобиль вы можете поставить различного рода броню. Здесь мы перечислили только сотую часть того что вас ждет на нашем сервере. Зайдя вы увидите 1000 приятных для вас мелочей...заходите!

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


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

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

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

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

    • 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, помогите пожалуйста сохранение лидерки и заместителя сделать
    • breznov
      От breznov
      Всем доброго времени суток ! Я пишу мод с нуля, дело дошло до подключения cef интерфейсов, я от слова совсем не понимаю как в моде прописать подключения cef.
      Пробовал конечно же подключать, создавал браузер через "cef_create_browser(playerid, 0x12345, "ссылка", false, false);", но ничего не получалось.
      Я только начинаю изучать работу данного языка, извиняюсь за то что я тупоголовый. Хочу попросить помощи у специалистов, будьте добры объяснить написание данной системы с отображением cef пожалуйста =(
      Если нужен будет мой код, я могу его предоставить.