Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 13 из 13 ПерваяПервая ... 3 11 12 13
Показано с 121 по 130 из 130
  1. #121
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    1) Нет, не сильно.

    2) OnPlayerUpdate может вызываться по 25-30 раз за секунду, в зависимости от активности игрока. Чем больше действий совершает игрок, тем больше данных нужно синхронизировать с сервером и тем чаще происходит вызов. При AFK OnPlayerUpdate вообще не вызывается, например.
    Сам по себе цикл ни к каким лагам не приведёт. Лаги создаёт кривой код. Код в таймерах (тем более с таким маленьким временным промежутком) должен быть максимально оптимизирован на быстродействие. Тогда и задержек никаких не будет.

    Оптимизацией лучше займись тогда, когда появятся проблемы с ней. Тогда можно будет отследить слабые места и переписать их. А пытаться заранее оптимизировать что-то - пустая трата времени.
    Писать заранее хороший код - не пустая трата времени.

    Для автора сие ссылка на хабр. Даст основы для понимания.


    //DeimoS: Перенёс и данное сообщение, так как ссылка, которую дал автор, по информативности совсем не подходит для описанной в вопросе ситуации. Скрипты в SA-MP - это не высоконагруженные приложения. И многое описанное в книге просто не подойдёт к SA-MP.
    Последний раз редактировалось DeimoS; 09.03.2019 в 19:55.

  2. #122
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    extract - это просто макрос. По факту это тот же sscanf.
    1. #define extract%0->%1; EXTRN%1;unformat(_:EXTRZ:EXTRV:EXTRX:%0,##,%1,,);

    И насчёт читаемости - дело вкуса. Как по мне, обычный sscanf гораздо лаконичнее, ибо и с нативками идентичен (SetTimer/SetTimerEx/CallLocalFunction и т.п. имеют тот же синтаксис), и более выделяется за счёт подсветки строки.


    Fallen A., ты в своём варианте, как минимум, забыл проверку на онлайн добавить, из-за чего выход за пределы массива обеспечен. Не говоря уже о том, что у автора проверка на ник идёт для игрока, которому выдаётся админка, а не для админа, который выдаёт.


    Автор, версия sscanf последняя? Если нет, то обнови. И вот:
    1. CMD:makeadmin(playerid, params[])
    2. {
    3. if(PI[playerid][pAdmin] < 5)
    4. return 0;
    5. if(!ADuty{playerid})
    6. return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
    7.  
    8. new targetid,
    9. level;
    10. if(sscanf(params,"ud", targetid, level))
    11. return SendClientMessage(playerid,COLOR_RED,"Используйте: /makeadmin [targetid] [level (0 - 6)]");
    12.  
    13. if(targetid == INVALID_PLAYER_ID)
    14. return 0;
    15.  
    16. if(level < 0 || level > 6)
    17. жreturn SendClientMessage(playerid,COLOR_VALIK,"Используйте: /makeadmin [targetid] [level (0 - 6)]");
    18.  
    19. if(PI[playerid][pAdmin]==5 && level > 4)
    20. return SendAdminsMessage(COLOR_RED,"net!");
    21.  
    22. if(GetString(PN(targetid), !"Mihail_Zubenko") || GetString(PN(targetid), !"Brian_DeSanto") || GetString(PN(targetid), !"Van_Kard"))
    23. return 0;
    24.  
    25. new string[145];
    26. if(PI[playerid][pAdmin] <= PI[targetid][pAdmin])
    27. {
    28. SendClientMessage(playerid,COLOR_RED,"Отказано в доступе!");
    29. format(string,sizeof(string),"Игрок %s[%d] пытается снять админа %s", PN(playerid), playerid, PN(targetid));
    30. SendAdminsMessage(COLOR_RED,string);
    31. return 0;
    32. }
    33. if(!GetString(PN(playerid),!"Mihail_Zubenko") )
    34. {
    35. if(!IsASuccesIP(PlayerRegIP[playerid], PlayerIp[playerid]) && PI[playerid][pAdmin]<7)
    36. {
    37. SendClientMessage(playerid,COLOR_LIGHTRED,"Наблюдается попытка взлома!");
    38. format(string,sizeof(string),"%s [%d] подозревается во зломе, проверьте его и авторизируйте /acceptadmin [7 lvl]",PN(playerid),playerid);
    39. SendAdminsMessage(COLOR_RED,string);
    40. return 0;
    41. }
    42. }
    43. PI[targetid][pAdmin] = level;
    44. format(string,sizeof(string),"Вы выдали игроку %s %d-й уровень администратирования",Name(targetid),level);
    45. SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    46. format(string,sizeof(string)," %s назначил игрока %s админом %d-го уровня",Name(playerid),Name(targetid),level);
    47. SendAdminsMessage(COLOR_RED,string);
    48. return 1;
    49. }



    UPD: перенёс последующий оффтоп сюда


    В читаемости нет вкуса. Попробуй открыть проект на 100к строк и поймешь.

    Лично мне не хочется напрягать мозг и думать, а что же там такое делает вот эта строка.
    Последний раз редактировалось DeimoS; 09.03.2019 в 13:13.

  3. #123
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Писать заранее хороший код - не пустая трата времени.
    Писать заранее хороший код != тратить время на оптимизацию уже написанного кода.
    Первое опирается сугубо на знания и опыт.
    Второе - пустая трата времени, ибо итоговая нагрузка может распространяться совсем не так, как предполагается при преждевременной оптимизации.

    А уж если рассматривать случай автора, когда оптимизация производится без надлежащего опыта, то шанс того, что от такой оптимизации будет больше вреда, чем пользы, довольно высок. Лучше тратьте своё время на реализацию идей. И если при онлайне начнутся проблемы с производительностью, подключите профайлер, соберёте статистику и увидите слабые места вашего скрипта.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #124
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Писать заранее хороший код != тратить время на оптимизацию уже написанного кода.
    Первое опирается сугубо на знания и опыт.
    Второе - пустая трата времени, ибо итоговая нагрузка может распространяться совсем не так, как предполагается при преждевременной оптимизации.

    А уж если рассматривать случай автора, когда оптимизация производится без надлежащего опыта, то шанс того, что от такой оптимизации будет больше вреда, чем пользы, довольно высок. Лучше тратьте своё время на реализацию идей. И если при онлайне начнутся проблемы с производительностью, подключите профайлер, соберёте статистику и увидите слабые места вашего скрипта.
    Горький опыт никто не отменял.

    И да, про масштабирование вообще ни разу не согласен. Видимо, ты совсем не знаком с высоконагруженными системами.

  5. #125
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    В читаемости нет вкуса.
    Читаемость - сугубо дело привычки. Как, например, в случае, если ты изначально изучал какой-нибудь Pascal, тебе будет непривычно читать код с сишным синтаксисом. И наоборот.
    То же самое и тут.


    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Попробуй открыть проект на 100к строк и поймешь.
    Эмм, что?
    Повторяю ещё раз: для SA-MP более привычен синтаксис sscanf, а не extract. Ты не найдёшь ни одну нативку с тем же синтаксисом, что есть у extract. А вот sscanf похож на все нативки, в которых так или иначе фигурируют заполнители. Отсюда и лучшая читаемость (если ты знаешь синтаксис, например, SetTimer, то и в синтаксисе sscanf ты разберёшься без труда. А вот extract у большинства создаёт вопросы).
    К чему ты приплёл сюда количество строк - непонятно.

    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Лично мне не хочется напрягать мозг и думать, а что же там такое делает вот эта строка.
    Если это ты про ошибку с проверкой имён, то зачем тогда вообще пытаться помогать, если не хочешь вникать?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. #126
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Читаемость - сугубо дело привычки. Как, например, в случае, если ты изначально изучал какой-нибудь Pascal, тебе будет непривычно читать код с сишным синтаксисом. И наоборот.
    То же самое и тут.




    Эмм, что?
    Повторяю ещё раз: для SA-MP более привычен синтаксис sscanf, а не extract. Ты не найдёшь ни одну нативку с тем же синтаксисом, что есть у extract. А вот sscanf похож на все нативки, в которых так или иначе фигурируют заполнители. Отсюда и лучшая читаемость (если ты знаешь синтаксис, например, SetTimer, то и в синтаксисе sscanf ты разберёшься без труда. А вот extract у большинства создаёт вопросы).
    К чему ты приплёл сюда количество строк - непонятно.



    Если это ты про ошибку с проверкой имён, то зачем тогда вообще пытаться помогать, если не хочешь вникать?


    Читаемость ни разу не дело привычки. Ты мало знаком с разработкой, либо вообще не знаком.

    100к строк говна вылить на свои глаза я не захочу и если там шлак, проще переделать, чем пытаться продолжать плодить этот биомусор.
    Последний раз редактировалось DeimoS; 09.03.2019 в 13:13.

  7. #127
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Горький опыт никто не отменял.

    И да, про масштабирование вообще ни разу не согласен. Видимо, ты совсем не знаком с высоконагруженными системами.
    Эмм, причём тут масштабируемость? -_- Тем более в SA-MP, где у тебя нет доступа к распределению аппаратных ресурсов, так как всем занимается ВМ и ты никакие коррективы в этот процесс внести не сможешь.

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

    Вот, почитай на досуге - http://optimization.guide/. Автор книги работал в facebook и был членом команды по повышению производительности. Собственно, если начнёшь гуглить, например, "преждевременная оптимизация", найдёшь ещё множество схожих мнений на этот счёт.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #128
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Читаемость ни разу не дело привычки.
    Ну вот мне привычнее и приятнее видеть в коде sscanf, а не extract. И я такой не один в SA-MP (скорее, нас большинство, если даже просто смотреть на количество скриптов с использованием extract). Что ты на это скажешь?


    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Ты мало знаком с разработкой, либо вообще не знаком.
    Переходить на личности - дурная привычка. Тем более, говорить о том, чего ты не знаешь.

    Цитата Сообщение от Fallen A. Посмотреть сообщение
    100к строк говна вылить на свои глаза я не захочу и если там шлак, проще переделать, чем пытаться продолжать плодить этот биомусор.
    Да о чём ты вообще? -_- Кто говорит про 100к строк говна? Ты вообще понимаешь о чём идёт речь?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #129
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    У тебя, естественно дивный и чудный мир, но, избавь меня от присутствия в нем.

  10. #130
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    У тебя, естественно дивный и чудный мир, но, избавь меня от присутствия в нем.
    Забавно, но это ты начал переходить на личности и говорить о том, о чём речи не шло :) А заодно и игнорировать вопросы, когда, видимо, ответить нечего.
    Странный ты.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 13 из 13 ПерваяПервая ... 3 11 12 13

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

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

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

Ваши права

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