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: Скриптинг курилка - truefail - 06.06.2012

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


Re: Скриптинг курилка - White_116 - 06.06.2012

создай 2д движок на основе ТекстДрав-ов.


Re: Скриптинг курилка - Mutha_X - 06.06.2012

Кстати, спасибо за идею xD


Re: Скриптинг курилка - Evansive - 06.06.2012

Quote:
Originally Posted by truefail
Посмотреть сообщение
Как бы могу, но это долго и муторно. Не проще ли сначала поискать?
В старых модах ( gf, pen ) и их новых модификациях столько багов, что ты быстрее с нуля напишешь.


Re: Скриптинг курилка - truefail - 07.06.2012

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


Re: Скриптинг курилка - Fill - 07.06.2012

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

ну для этого вы точно не по адресу, есть много сайтов-мониторингов, там ищите


Re: Скриптинг курилка - Be$$0n - 07.06.2012

Заинтересовал вопрос, например:
Есть массив:
pawn Код:
new Float:Massiv[][] = {
{0.0,1.1,2.2},
{3.3,4.4,5.5},
{6.6,7.7,8.8},
{9.9,10.10,11.11}
};
Вызываю его так:
pawn Код:
new string[50];
for(new i=0;i<50;i++)
{
format(string,sizeof string,"X: %f Y: %f Z: %f",Massiv[i][0],Massiv[i][1],Massiv[i][2]);
SendClientMessage(playerid, -1, string);
}
Как узнать когда массив достиг конца?{9.9,10.10,11.11}
P.S Цикл для примера стоит, но принцип тот же
P.S.S Про количество интеграций тоже не говорите, для примера же


Вопрос решил, а именно:
pawn Код:
printf("Количество координат: %d",sizeof(Massiv));



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

pawn Код:
new string[50];
for(new i=0; i < sizeof(Massiv); i++)
{
    format(string,sizeof string,"X: %f Y: %f Z: %f",Massiv[i][0],Massiv[i][1],Massiv[i][2]);
    SendClientMessage(playerid, -1, string);
}
ЗЫ учите матчасть!


Re: Скриптинг курилка - Be$$0n - 07.06.2012

Да, спасибо, методом экспериментов нашел ответ


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

Насколько я помню, в многомерных массивах может возвращаться неверный размер при sizeof...


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

Да, ставь несуществующую иконку с прозрачным цветом и опцией - "установить чекпоинт".


Re: Скриптинг курилка - raider19rus - 11.06.2012

А такой чекпоинт сработает в OnPlayerEnterCheckpoint ?
И как ето контролировать ?


Re: Оптимизация кода - Querydus - 11.06.2012

Код:
stock GetConnectedPlayers()
{
	new connectedplayers;
	for(new playerid; playerid < GetMaxPlayers() + 1; playerid++)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        connectedplayers++;
	    }
	    printf("Checking player %i for `connected`...", playerid);
	}
	printf("Connected players: %i.", connectedplayers);
	return connectedplayers;
}
Что будет, если я буду данную функцию (ну или сток) использовать в циклах, вместо MAX_PLAYERS (например)?


Re: Оптимизация кода - eakwarp - 11.06.2012

Quote:
Originally Posted by Querydus
Посмотреть сообщение
Код:
stock GetConnectedPlayers()
{
	new connectedplayers;
	for(new playerid; playerid < GetMaxPlayers() + 1; playerid++)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        connectedplayers++;
	    }
	    printf("Checking player %i for `connected`...", playerid);
	}
	printf("Connected players: %i.", connectedplayers);
	return connectedplayers;
}
Что будет, если я буду данную функцию (ну или сток) использовать в циклах, вместо MAX_PLAYERS (например)?
Будет сервер работающий со скоростью протухшей блевотины обезьяны.


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

Quote:
Originally Posted by ru.raider
Посмотреть сообщение
А такой чекпоинт сработает в OnPlayerEnterCheckpoint ?
И как ето контролировать ?
Не проверял, кстати. Скорее всего нет. Контролировать можно функцией проверки на нахождение в радиусе иконки (с учётом высоты).


Re: Оптимизация кода - raider19rus - 12.06.2012

Quote:
Originally Posted by Querydus
Посмотреть сообщение
Код:
stock GetConnectedPlayers()
{
	new connectedplayers;
	for(new playerid; playerid < GetMaxPlayers() + 1; playerid++)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        connectedplayers++;
	    }
	    printf("Checking player %i for `connected`...", playerid);
	}
	printf("Connected players: %i.", connectedplayers);
	return connectedplayers;
}
Что будет, если я буду данную функцию (ну или сток) использовать в циклах, вместо MAX_PLAYERS (например)?
Не проще ли сразу использовать в циклах GetMaxPlayers()+1 вместо MAX_PLAYERS ?


Re: Оптимизация кода - eakwarp - 12.06.2012

Quote:
Originally Posted by ru.raider
Посмотреть сообщение
Не проще ли сразу использовать в циклах GetMaxPlayers()+1 вместо MAX_PLAYERS ?
Изучите работу цикла for. Я бы послал вас на матчасть, но бестолку. В предложенном варианте GetMaxPlayers()+1 будет вызываться каждый прогон цикла, еще и через идиотскую функцию. Ничего более ущербного в сампе пока не придумали.


Re: Скриптинг курилка - DANGER1979 - 12.06.2012

самп в лог пишет такое с каких пор?
что бы это могло значить?
[23:47:37] Warning: PlayerDialogResponse PlayerId: 29 dialog ID doesn't match last sent dialog ID

если перевести
[23:47:37] Предупреждение: PlayerDialogResponse PlayerId: 29 диалогов ID не соответствует последний раз посланному диалогу ID

значит ли это что кто то пытался вызвать диалог с несуществующим ИД?
Т.к. вроде после этого сервер крашанул.

Лечиться такая фигня думаю так
if(dialogid < -1 || dialogid >= 32767) return 1;
if(!strlen(caption) || strlen(caption) > 64 || !strlen(info) || !strlen(button1)) return 1;

if(strlen(inputtext))
{
for(new i=0; i<strlen(inputtext); i++)
{
switch(inputtext[i])
{
case '0' .. '9': { continue; }
case 'A' .. 'Z': { continue; }
case 'a' .. 'z': { continue; }
default:
{ //если символы отличны от 'A' .. 'Z' || 'a' .. 'z' || '0' .. '9'
return 1;
}
}
}
}


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

Ну вообще перевод немного не точный, точный: Диалог ID 29 не соответствует последнему посланному ID диалога.
Ну ни как не 29 диалогов))))

А в твою проверку фейковый ИД попадает.

Лучшая защита это помимо того что ты отправляешь ИД клиенту, сохраняй его на сервере, и проверяй при приходе ответа, если не соответствует или на сервере вообще не было ничего записано - клиент прислал фейк.


Re: Скриптинг курилка - DANGER1979 - 12.06.2012

29 это ИД игрока, а не диалога

у меня стоит ещё такая проверка для проверка на подмену диалогов всякими читами
if(GetPVarInt(playerid, "gShowDialog") != dialogid && dialogid != -1 && dialogid < 1000)
{
SendClientMessage(playerid, COLOR_RED, " dialogid не соответствует запрошенному !");
Log(ERROR, "Error: dialogid не соответствует запрошенному"); }
//return 1;
}
но она просто для информирования