Скриптинг курилка

Нет. Тут что-то другое наверно. Даже когда я использую клавиши OnPlayerKeyStateChange ВООБЩЕ не срабатывает.
Краш детект и т.п. молчат обсалютно.
Reply

Quote:
Originally Posted by Gettopro
Посмотреть сообщение
Люди добрые. Помогите кто чем может. Может кто сталкивался:

Рандомно (может не происходить в течении нескольких часов, а может и через минуту после входа)
перестает работать соединение игрок-сервер, т.е. перестают работать ВСЕ стандартные калбеки. Такие как OnPlayerUpdate, OnPlayerKeyStateChange и т.п.
Но , кое-что да работает. OnPlayerText. И всё.
И если я не ошибаюсь, то я не один такой на своём сервере.

Есть только одна гепотеза. Есть несколько TextDraw-баров, состоящих по 50 маленьких. Т.Е. единовременно на экране около 200 текстравов, и до 50 раз в секунду происходит их показ/скрытие.

В какую сторону копать?
Я с твоего мода античит выпилил и это пропало
Reply

Quote:
Originally Posted by Gettopro
Посмотреть сообщение
Люди добрые. Помогите кто чем может. Может кто сталкивался:

Рандомно (может не происходить в течении нескольких часов, а может и через минуту после входа)
перестает работать соединение игрок-сервер, т.е. перестают работать ВСЕ стандартные калбеки. Такие как OnPlayerUpdate, OnPlayerKeyStateChange и т.п.
Но , кое-что да работает. OnPlayerText. И всё.
И если я не ошибаюсь, то я не один такой на своём сервере.

Есть только одна гепотеза. Есть несколько TextDraw-баров, состоящих по 50 маленьких. Т.Е. единовременно на экране около 200 текстравов, и до 50 раз в секунду происходит их показ/скрытие.

В какую сторону копать?
Недавно похожая проблема была, но связана она напрямую с крупными потерями трафика на маршруте через сервера мегафона. Игрок ставит ВПН или меняет интернет - все нормально. В конце концов всё решилось само собой. К симптомам добавлю отсутствие возможности заспавниться/переместить игрока, выдать диалог, ничего такого ему доступно не будет, его десинхронит, тут только кикать
Reply

Quote:
Originally Posted by =KempeR=
Посмотреть сообщение
Я с твоего мода античит выпилил и это пропало
там античитов херова туча, какой именно не подскажешь? :/
Reply

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Недавно похожая проблема была, но связана она напрямую с крупными потерями трафика на маршруте через сервера мегафона. Игрок ставит ВПН или меняет интернет - все нормально. В конце концов всё решилось само собой. К симптомам добавлю отсутствие возможности заспавниться/переместить игрока, выдать диалог, ничего такого ему доступно не будет, его десинхронит, тут только кикать
да, что-то подобное. я использую мобильный интернет с силу проживания в пригороде
буду ждать подобных подобных ситуаций у других игроков.
не исключено что это только у меня, т.к. не помню кто и когда говорил о схожей проблеме.
к сожалению не могу проверить на других серверах, психика не выдерживает играть где-то либо ещё.
Reply

Это из-за потери пакетов, наблюдаю данное явлвение 5 лет, иногда хватает потерять 5 пакетов и клиент начинает аутировать, бывают интересные случаи когда игрок не воспринимает вообще ничего, но данные он всё же отправляет корректно. Чекаю изменением брони или хп.
Reply

Quote:
Originally Posted by Gettopro
Посмотреть сообщение
там античитов херова туча, какой именно не подскажешь? :/
Было пару таймеров с говнокодищем, вот я их вообще вырезал из мода. По моим наблюдениям такое происходит из-за нагромождения различных систем в таймерах/OnPlayerUpdate. Кстати, подозреваю что это счётчик угла заноса. Я такое делал давно когда-то. На локалке работало красиво, а на проде у игроков оно пинговало и итоге приводило к десинхрону...
Reply

Quote:
Originally Posted by =KempeR=
Посмотреть сообщение
Было пару таймеров с говнокодищем, вот я их вообще вырезал из мода. По моим наблюдениям такое происходит из-за нагромождения различных систем в таймерах/OnPlayerUpdate. Кстати, подозреваю что это счётчик угла заноса. Я такое делал давно когда-то. На локалке работало красиво, а на проде у игроков оно пинговало и итоге приводило к десинхрону...
Ну это врядли. Говнокода уже не так много в моде.
Выяснилось что проблема только у меня, и свазана она на прямую от моего мобильного интернет оператора...
придется терпеть.
Reply

ВТФ:
Все игроки заходя на сервер имеют свои скины, всё норм.
Позже, если игрок умирает, его скин слетает.
НО! Слетает только для остальных.
т.е. у самого игрока после смерти скин остается нормальный. а у других он выглядит как CJ.

п.с. есть:
SetSpawnInfo в загрузке аккаунта,OnPlayerRequestClass и OnPlayerDeath есть.
PHP код:
for(new i<= 312i++){
    
AddPlayerClass(i0.00.00.00.0000000);

п.с.с и
PHP код:
SetPlayerSkin(playeridPlayer[playerid][pSkin]); 
в OnPlayerSpawn добавлял. Толку нету...

в SetSpawnInfo всё норм. даже принтую на всякий, там всё норм...
PHP код:
t_SetSpawnInfo(playeridteamskinFloat:xDFloat:yDFloat:zDFloat:AngleDweapon1 0weapon1_ammo 0weapon2 0weapon2_ammo 0,weapon3 0weapon3_ammo 0){
    
printf("SetSpawnInfo - %d - %d - %0.2f - %0.2f - %0.2f - %0.2f",playeridskin,xDyDzDAngleD);
    return 
SetSpawnInfo(playeridteamskinxDyDzDAngleD,weapon1weapon1_ammoweapon2weapon2_ammo,weapon3weapon3_ammo);
}
#define SetSpawnInfo t_SetSpawnInfo 
и логе норм
Quote:

[21:25:11] SetSpawnInfo - 0 - 32 - 1155.15 - 2313.92 - 10.48 - 329.13
[21:25:33] SetSpawnInfo - 1 - 29 - -13175.08 - 3049.64 - 25.30 - 4.00
[21:25:40] SetSpawnInfo - 6 - 122 - 1177.42 - -1323.15 - 14.07 - 269.26

а по факту все сиджеи бегают...
Reply

При входе на сервер скрываю кнопки выбора скина. В определённый момент эти кнопки требуется вновь отобразить. Если использовать ForceClassSelection, то кнопки появляется, но действие функции почему-то распространяется и на следующий спавн (то бишь, после респавна опять кидает на выбор скина).

Пытался сделать связку: "выход со слежки + ForceClassSelection + вход в слежку + выход со слежки" - дабы попробовать добиться перереспавна, но это не помогло. Различные связки подобной схемы с таймером тоже не дали какого-либо результата.

Есть ли у кого какие идеи на тему того, как вернуть отображение стрелок и, при этом, сделать весь процесс скрытым для игрока (обойтись без спавна на некоторое время и т.п.) + избавиться от подобного бага?
Reply

О, на вики логин снова заработал
Reply

Quote:
Originally Posted by Eims
Посмотреть сообщение
При входе на сервер скрываю кнопки выбора скина. В определённый момент эти кнопки требуется вновь отобразить. Если использовать ForceClassSelection, то кнопки появляется, но действие функции почему-то распространяется и на следующий спавн (то бишь, после респавна опять кидает на выбор скина).

Пытался сделать связку: "выход со слежки + ForceClassSelection + вход в слежку + выход со слежки" - дабы попробовать добиться перереспавна, но это не помогло. Различные связки подобной схемы с таймером тоже не дали какого-либо результата.

Есть ли у кого какие идеи на тему того, как вернуть отображение стрелок и, при этом, сделать весь процесс скрытым для игрока (обойтись без спавна на некоторое время и т.п.) + избавиться от подобного бага?
Была у меня проблема. Когда я скрывал кнопки при коннекте спектатором, они снова появлялись при выходе из спектатора, не скипались, нужно было нажать на одну из них для спавна. А оказалось, что они появлялись, потому что ни разу не вызывался SetSpawnInfo до TogglePlayerSpectator(false). Либо в этом ключе пошаманить (но учитывать, что хоть раз для корректного спавна нужно вызвать SetSpawnInfo, иначе баг сампа ввиде кика), либо в OnPlayerRequestClass проверку, чтобы на следующем спавне сразу пропустить кнопки и заспавниться
Reply

Quote:
Originally Posted by Ejikin91
Посмотреть сообщение
Была у меня проблема. Когда я скрывал кнопки при коннекте спектатором, они снова появлялись при выходе из спектатора, не скипались, нужно было нажать на одну из них для спавна. А оказалось, что они появлялись, потому что ни разу не вызывался SetSpawnInfo до TogglePlayerSpectator(false). Либо в этом ключе пошаманить (но учитывать, что хоть раз для корректного спавна нужно вызвать SetSpawnInfo, иначе баг сампа ввиде кика), либо в OnPlayerRequestClass проверку, чтобы на следующем спавне сразу пропустить кнопки и заспавниться
Без SetSpawnInfo кнопки показывает, как я понял, только если нет AddPlayerClass. Иначе координаты спавна просто берёт от AddPlayerClass (по крайней мере я пробовал вариант без SetSpawnInfo и после выхода из слежки просто спавнило).
Пришлось сделать по старинке, всё на дополнительных проверках в OnPlayerRequestClass, хотя надеялся обойтись без этого. Думал даже через RakNet попытаться отправлять фейковые пакеты, отключающие и включающие выбор скина при следующем спавне, но так до конца и не разобрался с тем, по какой инфе клиент ориентируется
Reply

Вопрос сижу и разбираю версии mysql. но до меня ни как не дойдет в чем суть. как бы пользуюсь mysql. на данный момент я знаю что есть версии r5, r6, r7 как понятно что между с собой они отличаются функционалом. Но не могу понять при чем тут различные версии. например mysql r39-6 или r40-1 Так же интересует вопрос по быстро отвечаемости данного функционала. То есть есть ли разница между mysql r5 и mysql r7 в скорости запросах и ответа. Еще есть вопрос например плагин mysql r5 стабильно работал на версиях linux того года то есть debain 5-6, как будет вести он сейчас на deabain 8-9 будут ли проблемы ?
Reply

Хм, полазил по форум анг. посмотрел их работы. Так интеренсо ребята так же все придерживаются прицу команд. и вывод все в виде сообщений. причем крутых вещей я реально не увидел что бы прям вау. видать им так просто удобно играть как и мне. А если посмотреть что у нас творится то целый IT технологии
Все же стоит выучить английский что бы брать у них заказы и оплату долларами
Reply

Вопрос не совсем по скриптингу.

Можно ли как-то отцеплять стандартные колёса от машин? Среди них есть интересные диски, которых нет в тюн-комплекте (вроде Маджестика). По-моему со скинов как-то берут объекты и используют.
Reply

Объекты в samp.img если только. Брать никак нельзя (скриптово). Колёса на авто (если не 3D) используют текстуру.
Reply

Quote:
Originally Posted by DrumYum
Посмотреть сообщение
Есть ли какая-то разница между _tquery и _query при установке кодировки через "SET NAMES..."?
На _query запрос как будто мимо проходит, кодировка не выставляется, кириллица не сохраняется, а на _tquery всё нормально. Перепроверил несколько раз.
Нашёл на другом форуме тему про похожий случай, но там была обратная ситуация (не работал _tquery), там никак не прояснили это. Скорее всего, я какую-то очевидную вещь не вижу, но всё же.
R41-4

Quote:
В данной теме не описывается скриптинг с применением мускула и не решаются ваши проблемы с кодом, она создана для решения вопросов касающихся непосредственно самого MySQL.

Reply

Вопрос по командам. Просто обновляю свою память.
Вот например я сделал команду. /makeadmin
Команда имеет структуру /makeadmin [idигрока] [lvl] [AdminName]

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

Код:
if(strcmp(cmd, "/makeadmin", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /makeadmin [ID/Имя] [level] [AdminName]");
			new para1;
			new level;
			para1 = ReturnUser(tmp); // переменая отвечающая за ид игрока 
			tmp = strtok(cmdtext, idx);
			level = strval(tmp); /переменая отвечающая за лвл игрока 
			
			new length = strlen(cmdtext);/ эта переменая отвечающая за adminName, дале мне непонятен  цикл. типо он считвает мною веденный символ с начало его ведение и до последнего верно ?
			while ((idx < length) && (cmdtext[idx] <= ' '))
			{
				idx++;
			}
			new offset = idx;
			new result[64];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			Все что выше мне уже не очень понятно 
			
			if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /makeadmin [ID/Имя] [level] [AdminName]");
			if (PlayerInfo[playerid][pAdmin] >= 5 && AdminDuty[playerid] == 1)
			{
			    if(IsPlayerConnected(para1))
			    {
			        if(para1 != INVALID_PLAYER_ID)
			        {
						GetPlayerName(para1, giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						PlayerInfo[para1][pAdmin] = level;
						strmid(PlayerInfo[para1][pFirstName], result, 0, strlen(result), 64);
						printf("AdmCmd: %s has promoted %s to a level %d admin.", sendername, giveplayer, level, result);
						format(string, sizeof(string), "Bы былu назначены дo %d администраторского уровня, AdminName %s (( Администратором %s ))", level, sendername,result);
						SendClientMessage(para1, COLOR_LIGHTBLUE, string);
						format(string, sizeof(string), "Bы назначили  %s администратором %d ypoвня, AdminName %s", giveplayer,level,result);
						SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
					}
				}
			}
			else SendClientMessage(playerid, COLOR_GRAD1, "У вас недостаточно прав для использования этой команды!");
		}
		return 1;
	}
Reply

Можно было проще, делай всё по порядку. Лет 6 назад я писал:
pawn Код:
if(strcmp(cmd, "/ban", true, 4) == 0)
{
    new tmp[128]; // создали новую переменную для хранения параметров
    tmp = strtok(cmdtext, idx); // засунули в неё параметры до следующего пробела
    if(strlen(tmp) < 1) return SendClientMessage(playerid, 0xFF0000FF, "Синтаксис: /ban  [playerid][reason]"); // если нет аргументов
    new targetid = strval(tmp); // взяли ID игрока из параметров
    new pos = strfind(cmdtext, " ", true, 4); // ищем пробел после ID
    if(pos == -1) return SendClientMessage(playerid, 0xFF0000FF, "Синтаксис: /ban  [playerid][text]"); // если больше аргументов нет
    format(tmp, sizeof(tmp), "Администратор %s забанил игрока %s. Причина: %s", PlayerInfo[playerid][pName], PlayerInfo[targetid][pName], cmdtext[pos + 1]); // форматируем с причиной, полученной из параметров после следующего пробела (важно: причина может быть с пробелами, т.е. в несколько слов).
    SendClientMessage(targetid, 0xFF0000FF, tmp);
    Ban(playerid);
    return 1;
}
Добавляешь ещё один strtok только для цифрового параметра, а потом уже strfind.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)