Sign in to follow this  
Followers 0

3 posts in this topic

Знаете ли вы, что можно хранить не более 32 переменных, которые могут принимать значения логического типа true/false, в одной переменной? Вы не только сэкономите память, но также наведете порядок в своем коде. С использованием char можно будет хранить только 8 флагов!

Если у вас есть, допустим, 100 переменных логического типа, то вы будете использовать 195 Кб пространства. Используя 4 массива с флагами, вы затратите только 8 Кб. Результат будет тот же, но вы сэкономите 187 Кб пространства.


Объявление:

enum
    PlayerFlags: (<< = 1)
    {
        LOGGED = 1, //очень важно, чтобы значение первой константы было 1
        ANIMLOADING,
        RESPAWN
    };

new
    PlayerFlags:Player[MAX_PLAYERS];

 

Как это используется:

//приравняет все флаги к 0
Player[playerid] = PlayerFlags:0;
 
//значение флага ANIMLOADING будет истина (1)
Player[playerid] |= ANIMLOADING;

 

//значение флага ANIMLOADING будет ложь (0)
Player[playerid] &= ~ANIMLOADING;

 

//установит противоположное значение флага ANIMLOADING
Player[playerid] ^= ANIMLOADING;

 

//вернет значение флага ANIMLOADING
Player[playerid] & ANIMLOADING;

 

Автор: Slice

Перевод данной версии: @m1n1vv 

Edited by DEST
Причина: правки

Share this post


Link to post
Share on other sites

Лишние сообщения почищены. Не обратил внимание, что это перевод. А значит, содержание будет примерно одинаково (в сети есть практически такой же перевод от 2014 года). Авторство поправил. 

Share this post


Link to post
Share on other sites

АВТОМАТИЧЕСКИ СФОРМИРОВАННОЕ СООБЩЕНИЕ:

Данная тема была перемещена модерацией или администрацией портала PAWNO-RUS.RU! 

Перемещена из: "Скриптинг PAWN > Готовые решения"

Перемещена в: "Скриптинг PAWN > Уроки"

 

С уважением, ваш Бот! 

Если вы НЕ согласны с переносом данной темы в раздел "Скриптинг PAWN > Уроки", пожалуйтесь на это сообщение в жалобе указав причины вашего недовольства. Спасибо. 

 

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Zaire
      By Zaire
      CMD:ban(playerid, params[]) { if(!PlayerInfo[playerid][pLogged]) return true; if(PlayerInfo[playerid][pAdmin] < 3 || AdminLogged[playerid] == false) return true; if(sscanf(params, "uis[64]", params[0], params[1], params[2])) return SendClientMessage(playerid, COLOR_GREY, "Èñïîëüçîâàíèå: /ban [id/íèê èãðîêà] [êîë-âî äíåé] [ïðè÷èíà]"); if(!IsPlayerConnected(params[0]) || params[0] == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, ""TPLAYEROFFLINE""); if(!PlayerInfo[params[0]][pLogged]) return SendClientMessage(playerid, COLOR_GREY, ""TPLAYERNLOGGED""); if(PlayerInfo[params[0]][pDebugUser]) return SendClientMessage(playerid, COLOR_GREY, ""TPLAYEROFFLINE""); if(PlayerInfo[params[0]][pAdmin] >= 1339) return SendClientMessage(playerid, COLOR_GREY, "Ýòîò èãðîê Îñíîâàòåëü! Åãî íå âîçìîæíî çàáëîêèðîâàòü!"); if(params[1] > 365 && params[1] != -1 || params[1] < 1 && params[1] != -1 ) return SendClientMessage(playerid, COLOR_GREY, "Êîë-âî äíåé îò 1 äî 365!"); if(params[1] == -1 && PlayerInfo[playerid][pAdmin] < 1339) return SendClientMessage(playerid, COLOR_GREY, "Âû íå ìîæåòå çàáëîêèðîâàòü èãðîêà íàâñåãäà!"); if(!AddPlayerBan(params[0], playerid, params[1], params[2])) {  
    • sawe123
      By sawe123
      Есть ли какая то система видел в моде что можно настраивать вес авто ищу такую систему.