SA-MP Forums Archive
Скриптинг курилка - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Скриптинг курилка (/showthread.php?tid=111279)



Re: Скриптинг курилка - OstGot - 20.03.2015

Quote:
Originally Posted by cm666
Посмотреть сообщение
case 1...100000
есть чтото подобное ?
Даже если есть, тут дело не в производительности компьютера, он то и "1...1000000" я думаю скомпилирует, тут ошибка в другом, как мне кажется.
Тем более сама инклуда компилируется, а подключенная к скрипту (любому) - нет.

Quote:
Originally Posted by stabker
Посмотреть сообщение
Пропущенная скобка, длинный макрос.
Ничего из этого, все скобки проверил лично, каждую
Макрос только один использую, он - короче некуда)
Вобщем придётся по-частям отбрасывать разные участки кода, чтобы найти неработающий..


Re: Скриптинг курилка - ZiGGi - 20.03.2015

Quote:
Originally Posted by OstGot
Посмотреть сообщение
Кто-нибудь знает основные причины зависания pawno во время компиляции? (не вылета, именно зависания).
Я уже второй день ломаю голову из-за чего это могло произойти, и уже выяснил, что проблема именно в моём коде. Самое интересное то, что проблемный код у меня в инклуде. Компилирую её саму - вообще проблем нет. Подключаю к любому скрипту и компилирую его - зависание. Код изменял много и по мелочи, так что найти проблемное место очень проблематично.. Любые мысли, пожалуйста.
Можешь попробовать компилятор от Zeex (https://github.com/Zeex/pawn), там какие-то крэши исправлены.
Или ознакомься с этим: https://sampforum.blast.hk/showthread.php?tid=355877


Re: Скриптинг курилка - SoNikMells - 20.03.2015

Quote:
Originally Posted by cm666
Посмотреть сообщение
case 1...100000
есть чтото подобное ?
Где то очень длинная строка, возможно текстовая или подряд много перечислений массивов.

К примеру
pawn Код:
SetPlayerRaceCP(playerid, 1, MotoCheckpoint_2[GetLoad2(playerid)][0], MotoCheckpoint_2[GetLoad2(playerid)][1], MotoCheckpoint_2[GetLoad2(playerid)][2], MotoCheckpoint_2[GetLoad2(playerid)][0], MotoCheckpoint_2[GetLoad2(playerid)][1], MotoCheckpoint_2[GetLoad2(playerid)][2], 5)
+ это макрос


Re: Скриптинг курилка - OKStyle - 21.03.2015

Может, просто стоит подождать, пока отвиснет? Тяжёлые моды обычно долго компилируются.


Re: Скриптинг курилка - OstGot - 21.03.2015

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Может, просто стоит подождать, пока отвиснет? Тяжёлые моды обычно долго компилируются.
Нет) У меня мой скрипт 3к строк, мод пустой (для теста). Любые другие моды, в десятки раз большие, компилировались гораздо быстрее.

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Можешь попробовать компилятор от Zeex (https://github.com/Zeex/pawn), там какие-то крэши исправлены.
Пробовал, результат тот-же

..Вобщем, я заметил, что зависания происходят из-за перехватов callback'ов (Hook Method 7). И опять-же, странно то, что только callback'ов. То есть обычные функции у меня тоже перехватываются, однако из-за них не вылетает. Пробовал убрать конечные паблики именно в скрипте, к которому подключаю проблемную инклуду - не помогло. Буду думать дальше.


Re: Скриптинг курилка - Richard_Gere - 21.03.2015

Quote:
Originally Posted by OstGot
Посмотреть сообщение
Кто-нибудь знает основные причины зависания pawno во время компиляции? (не вылета, именно зависания).
Я уже второй день ломаю голову из-за чего это могло произойти, и уже выяснил, что проблема именно в моём коде. Самое интересное то, что проблемный код у меня в инклуде. Компилирую её саму - вообще проблем нет. Подключаю к любому скрипту и компилирую его - зависание. Код изменял много и по мелочи, так что найти проблемное место очень проблематично.. Любые мысли, пожалуйста.
Вставь "#error 1" и постепенно опускай в коде до зависания, так и найдешь строку где зависает. Всегда так делаю )


Re: Скриптинг курилка - OstGot - 21.03.2015

Quote:
Originally Posted by Richard_Gere
Посмотреть сообщение
Вставь "#error 1" и постепенно опускай в коде до зависания, так и найдешь строку где зависает. Всегда так делаю )
Так дело в том, что нашёл уже)
Лично я комментировал сначала все функции вообще, потом только автовызываемые, проблема в них -> потом выяснил где именно, это строчки:
pawn Код:
#if defined my_OnGameModeInit
Пробовал вырезать их просто на чистую инклуду и мод, всё работает -_-
Проблема вроде ясна, а вроде нет


Re: Скриптинг курилка - Urukhay - 22.03.2015

Если на момент рестарта сервера (когда пришло время вызывать команду rcon gmx) не завершились все запросы с сохранением в базу MySQL, рестарт оттягивается и сервер ждёт пока плагин выполнит все запросы?


Re: Скриптинг курилка - eXtAbLE - 22.03.2015

Почему когда выключаю samp-server.exe данные не сохраняются,а когда вызываю GameModeExit через команду,то сохраняется,в OnGameModeExit сохранение всего есть.


Re: Скриптинг курилка - Stepashka - 22.03.2015

Quote:
Originally Posted by Urukhay
Посмотреть сообщение
Если на момент рестарта сервера (когда пришло время вызывать команду rcon gmx) не завершились все запросы с сохранением в базу MySQL, рестарт оттягивается и сервер ждёт пока плагин выполнит все запросы?
Не должен ждать. Но можешь проверить.
Quote:
Originally Posted by eXtAbLE
Посмотреть сообщение
Почему когда выключаю samp-server.exe данные не сохраняются,а когда вызываю GameModeExit через команду,то сохраняется,в OnGameModeExit сохранение всего есть.
Если выключаешь через завершение процесса, то это нормальна логика. Если хочешь что бы вызывался OnGameModeExit нужно вызывать консольную команду exit.


Re: Скриптинг курилка - eXtAbLE - 22.03.2015

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


Re: Скриптинг курилка - Romz - 22.03.2015

Quote:
Originally Posted by eXtAbLE
Посмотреть сообщение
Если допустим я запускаю сервер на компьютере( я так не делаю,просто допустим ) ,и у меня выключается свет,получается что вся инфа слетит и в базу ничего не сохранится,можно это предотвратить?
если выключится свет то вы явно не как не сможете сохранить данные которые не успели сохранится.


Re: Скриптинг курилка - Stepashka - 22.03.2015

Quote:
Originally Posted by eXtAbLE
Посмотреть сообщение
Если допустим я запускаю сервер на компьютере( я так не делаю,просто допустим ) ,и у меня выключается свет,получается что вся инфа слетит и в базу ничего не сохранится,можно это предотвратить?
Додуматься самостоятельно до сохранения данных в момент изменения или периодически серого вещества не хватает?


Re: Скриптинг курилка - eXtAbLE - 22.03.2015

Если бы я сам мог скорее всего сюда бы не писал,и вообще не шарю о чем ты сейчас говоришь,если закрывать samp-server.exe OnGameModeExit не вызывается?


Re: Скриптинг курилка - Stepashka - 22.03.2015

Quote:
Originally Posted by eXtAbLE
Посмотреть сообщение
Если бы я сам мог скорее всего сюда бы не писал,и вообще не шарю о чем ты сейчас говоришь,если закрывать samp-server.exe OnGameModeExit не вызывается?
Ты читал что я написал?


Re: Скриптинг курилка - stabker - 23.03.2015

delete


Re: Скриптинг курилка - Makar93 - 23.03.2015

Quote:
Originally Posted by eXtAbLE
Посмотреть сообщение
если закрывать samp-server.exe OnGameModeExit не вызывается?
Нет, не вызывается.
По сути вопроса: не существуют идеальные системы, которые могут восстановить потерянные данные или предотвратить их потерю. Тут надо ловить баланс между производительностью (например, как предложил степашка - сохранять данные при их изменении) и вероятностью потерять данные (например, сохранять раз в сутки, уверуя в то, что сервер не упадет).
Сохраняй данные например раз в полчаса/час/два часа, откат в случае форс-мажора будет незначительный.


Re: Скриптинг курилка - Urukhay - 23.03.2015

Если в OnPlayerDisconnect вызывать функцию, которая использует ID отключившегося, то до завершения выполнения это функции на этот слот никто не подключится?


Re: Скриптинг курилка - OstGot - 23.03.2015

Quote:
Originally Posted by Urukhay
Посмотреть сообщение
Если в OnPlayerDisconnect вызывать функцию, которая использует ID отключившегося, то до завершения выполнения это функции на этот слот никто не подключится?
Нет, не должен, т.к. нет мультипоточности. Да если бы и была, то код бы выполняться вполне бы успевал.


Re: Скриптинг курилка - Urukhay - 23.03.2015

Является ли нормальной практикой выносить создание большого количества TextDraw в инклюд?