Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 6 из 6

Тема: String all player

  1. #1
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±

    String all player

    Всем привет.

    Будет ли нагрузка на мод если сделать так.

    PHP код:
    enum pinfo
    {
        
    pCMDstr[512]
    }
    new 
    PI[MAX_PLAYERS][pinfo]; 
    использование:
    PHP код:
    format(PI[playerid][pCMDstr],... 
    Помню мне кто-то сказал если будет онлайн большой то сервер накроется медным тазом. Верно ли это?
    на сколько я знаю размер стека 16384 байт

    если судить по теории что мне сказали выше то это, 512*500 = 256000, что в 15.6 раз превышает раз стека.

    но
    опять же судя по ^

    если использовать так:

    PHP код:
    enum pinfo
    {
        
    pName[24],
        
    pIp[16]
    }
    new 
    PI[MAX_PLAYERS][pinfo];

    public 
    OnPlayerConnect(playerid)
    {
        
    GetPlayerName(playerid,PI[playerid][pName],24);
        
    GetPlayerIp(playerid,PI[playerid][pIp],16);
        return 
    1;

    то получается: 24*500 = 12000 / 16*500 = 8000 / 12000+8000 = 20000 что тоже превышает размер стека.

    Собственно вопрос такой, размер стека действительно так увеличивается или он останавливается на 512+24+16 ?


    модераторам: извиняюсь, забыл добавить тэг [вопрос], добавьте если не трудно.
    Последний раз редактировалось seriu; 01.08.2014 в 01:34. Причина: 1

  2. #2
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Добавил.Будьте бдительнее :)

  3. Пользователь сказал cпасибо:
    seriu (01.08.2014)
  4. #3
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Не совсем так, 1 ячейка = 4 байта, в твоём случае получится 512 + MAX_PLAYERS (500 по дефолту) = 1012 * 4 = 4048!
    Во втором случае потребуется на много меньше памяти. 24 + 16 + MAX_PLAYERS (500 по дефолту) = 540 * 4 = 2160!

  5. Пользователь сказал cпасибо:
    seriu (01.08.2014)
  6. #4
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    А зачем создавать глобально, если можно локально?

  7. #5
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    А зачем создавать глобально, если можно локально?
    если создать одну new str[512];

    и каждый раз когда игроки используют что-то то format не всегда срабатывает т.к не успевает и получается немного не то что должно быть

  8. #6
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    А зачем создавать глобально, если можно локально?
    Ну, например, если сделать в pInfo Name [24], в коннекте записывать в массив имя, то можно будет узнавать имя игрока, вызвав лишь эту переменную :)

    - - - Добавлено - - -

    Цитата Сообщение от seriu Посмотреть сообщение
    если создать одну new str[512];

    и каждый раз когда игроки используют что-то то format не всегда срабатывает т.к не успевает и получается немного не то что должно быть
    Дело не в этом, можно обнулять глобальный массив перед новым использованием str [0] = 0; А вообще, я бы рекомендовал использовать локальные массивы, чем один глобальный, тогда таких траблов точно не произойдёт :) Не стоит для каждого игрока выделять глобальный массив, это слишком затратно.

  9. Пользователь сказал cпасибо:
    #ball (01.08.2014)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •