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

Значит на оба вопроса ответ - никак.


Re: Скриптинг курилка - ZAM - 26.05.2012

Ребят, не подскажите какую нибудь проверку на состояние автомобиля (заведен ли двигатель или нет).

p.s Буду "пихать" в OnPlayerKeyStateChange


Re: Скриптинг курилка - RAEN - 26.05.2012

Quote:

Ребят, не подскажите какую нибудь проверку на состояние автомобиля (заведен ли двигатель или нет).

p.s Буду "пихать" в OnPlayerKeyStateChange

new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParams(idcar,engine,lights,alarm,doors,b onnet,boot,objective);


У кого нибудь есть старые версии плагина crashdetect? Нужна версия 4.1.1.


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

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Значит на оба вопроса ответ - никак.
Чо эт никак-то?

SetVehicleVelocity


Re: Скриптинг курилка - DartfoL - 26.05.2012

Quote:
Originally Posted by Evansive
Посмотреть сообщение
Чо эт никак-то?

SetVehicleVelocity

1 фейспалма тут не хватает


Re: Скриптинг курилка - Baks - 26.05.2012

Для чего нужна функция - SetTeamCount(кол-во команд)?
И работает ли / исправили SetPlayerTeam? Т.к. работала она нестабильно.


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

Quote:
Originally Posted by Evansive
Посмотреть сообщение
Чо эт никак-то?

SetVehicleVelocity
Для выскочки выделил:
Quote:
Originally Posted by Be$$0n
Посмотреть сообщение
Возможно ли скриптово остановить поезд/трамвай? SetVehicleVelocity и замораживать игрока не тормозят.
Quote:
Originally Posted by Baks
Посмотреть сообщение
Для чего нужна функция - SetTeamCount(кол-во команд)?
И работает ли / исправили SetPlayerTeam? Т.к. работала она нестабильно.
Для установки количества команд на сервере.
Ни о каких проблемах с функцией SetPlayerTeam ни когда не наблюдал, какую нестабильность вы в ней увидели?


Re: Скриптинг курилка - Baks - 26.05.2012

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Для установки количества команд на сервере.
Ни о каких проблемах с функцией SetPlayerTeam ни когда не наблюдал, какую нестабильность вы в ней увидели?
Все просто, последний раз ее использовал на 0.3b или 0.3c (не помню), ставил в OnplayerSpawn (как указано в вики), но довольно часто срабатывала не правильно (можно было грохнуть игрока из своей команды). Спрашивал, вроде, здесь же (http://forum.sa-mp.com/showthread.ph...am#post1226606), ответили, что работа этой функции нестабильна.

Хотя, вроде, исправили, порылся в поиске, увидел следующее - "Fix for SetPlayerTeam() sometimes desyncing and allowing friendly fire."


Re: Скриптинг курилка - Tipple - 27.05.2012

Quote:
Originally Posted by Baks
Посмотреть сообщение
Все просто, последний раз ее использовал на 0.3b или 0.3c (не помню), ставил в OnplayerSpawn (как указано в вики), но довольно часто срабатывала не правильно (можно было грохнуть игрока из своей команды). Спрашивал, вроде, здесь же (http://forum.sa-mp.com/showthread.ph...am#post1226606), ответили, что работа этой функции нестабильна.

Хотя, вроде, исправили, порылся в поиске, увидел следующее - "Fix for SetPlayerTeam() sometimes desyncing and allowing friendly fire."
Совершенно верно, работа данной ф-ции нестабильна уже сколько версий сампа вышло, а разработчики так и не исправили, может потому что она не востребована среди скриптеров, вместо этого я использую PVar.


Re: Скриптинг курилка - RAEN - 28.05.2012

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Разве это не очевидно:
pawn Код:
YCMD:test(playerid, params[], help)
{
    new string[32], amount;
    sscanf(params, "s[32]i", string, amount);
    if(!strcmp(string, "buy", true))
    {
        if (!amount) return SendClientMessage(playerid, COLOR_GREY, "Use /test [text] [amount]!");
        //Здесь параметр 'amount' используется
    }
    else if(!strcmp(string, "buy2", true))
    {
        //Здесь параметр 'amount' не нужен
    }
    else return SendClientMessage(playerid, COLOR_GREY, "Use /test [text] [amount]!");
}
А если более сложная конструкция, на подобии:
pawn Код:
YCMD:test(playerid, params[], help)
{
    new string[32], amount;
    sscanf(params, "s[32]iuii", string, amount,giveplayerid,amount2,amount3);
    if(!strcmp(string, "buy", true))
    {
        if (!amount3) return SendClientMessage(playerid, COLOR_GREY, "Use /test [text] [amount]!");
        //Здесь параметр 'amount3' используется
    }
    else if(!strcmp(string, "buy2", true))
    {
        //Здесь параметр 'amount' не нужен
    }
    else return SendClientMessage(playerid, COLOR_GREY, "Use /test [text] [amount]!");
}
Где в команде /test buy [amount3] - Используется параметр: amount3. Который можно вызвать, набрав команду: /test buy [amount] [giveplayerid] [amount2] [и только потом amount3]

Как быть в данном случае? Как убрать необходимость ввода предыдущих параметров?


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

Quote:
Originally Posted by RAEN
View Post
А если более сложная конструкция, на подобии:
Code:
YCMD:test(playerid, params[], help)
{
	new string[32], amount;
	sscanf(params, "s[32]iuii", string, amount,giveplayerid,amount2,amount3);
	if(!strcmp(string, "buy", true))
	{
		if (!amount3) return SendClientMessage(playerid, COLOR_GREY, "Use /test [text] [amount]!");
		//Здесь параметр 'amount3' используется
	}
	else if(!strcmp(string, "buy2", true))
	{
		//Здесь параметр 'amount' не нужен
	}
	else return SendClientMessage(playerid, COLOR_GREY, "Use /test [text] [amount]!");
}
Где в команде /test buy [amount3] - Используется параметр: amount3. Который можно вызвать, набрав команду: /test buy [amount] [giveplayerid] [amount2] [и только потом amount3]

Как быть в данном случае? Как убрать необходимость ввода предыдущих параметров?
Ещё элементарней: отказаться от столь сложной логики.
Смотри на функционал с точки зрения пользователя, а это по сути дети, им лень вводить по 3-4 параметра в консоль, да даже 2 это чаще всего много, дайте им графическое меню и селекторы.


Re: Скриптинг курилка - RAEN - 28.05.2012

Quote:
Originally Posted by Stepashka
View Post
Ещё элементарней: отказаться от столь сложной логики.
Смотри на функционал с точки зрения пользователя, а это по сути дети, им лень вводить по 3-4 параметра в консоль, да даже 2 это чаще всего много, дайте им графическое меню и селекторы.
Графическое меню это понятно, но тут нужно вывод с помощью команды делать. А то, что перед параметром amount3, стоят ещё другие параметры никто не знает. Поэтому команду будет набрать невозможно. Если другого выхода нет, кроме как вывод информации через меню, то это печально...


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

Quote:
Originally Posted by RAEN
View Post
Графическое меню это понятно, но тут нужно вывод с помощью команды делать. А то, что перед параметром amount3, стоят ещё другие параметры никто не знает. Поэтому команду будет набрать невозможно. Если другого выхода нет, кроме как вывод информации через меню, то это печально...
Печально то что вы вывод информации через меню считаете печальным.
Информация к размышлению: почему люди отказались от консольных приложений в пользу графического интерфейса?!


Re: Скриптинг курилка - Hawkins - 28.05.2012

Quote:

strmid(PlayerInfo[playerid][pEmail], inputtext,0,strlen(inputtext), 255);

Даю значение к pEmail то что ввел с диалога. При сохранение в таблице только выводится первая буква.

К примеру вводил abcd@mail.ru
Сохраняется только буква a

Почему?


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

А так:
Code:
PlayerInfo[playerid][pEmail][0] = EOS;
strcat(PlayerInfo[playerid][pEmail], inputtext);
и ещё, куда сохраняется, может проблема в сохранении?


Re: Скриптинг курилка - RAEN - 28.05.2012

Quote:
Originally Posted by Stepashka
View Post
Печально то что вы вывод информации через меню считаете печальным.
Информация к размышлению: почему люди отказались от консольных приложений в пользу графического интерфейса?!
Я не считаю его печальным Я просто всегда стараюсь оставлять альтернативу для староверов. Кому-то удобно так, кому-то иначе, вкусы разные.


Re: Скриптинг курилка - Hawkins - 28.05.2012

Quote:
Originally Posted by Stepashka
View Post
А так:
Code:
PlayerInfo[playerid][pEmail][0] = EOS;
strcat(PlayerInfo[playerid][pEmail], inputtext);
и ещё, куда сохраняется, может проблема в сохранении?
Не помогло. Сразу компилятор дал ошибку на [0] - Его удалил, всё норм, но ничего не сохраняет.

PHP Code:
stock SaveAccount1(playerid)
// Сохранение аккаунта.
    
if(PlayerInfo[playerid][pLogged] == true)
    { 
// Проверка, если аккаунт авторизован.
        
CheckMySQLConnection(); // Проверяем, подключена ли БД.
        
new query[800], sqlname[MAX_PLAYER_NAME], sqlpass[64], string[800];
        new 
origin PlayerInfo[playerid][pOrigin];
        new 
house PlayerInfo[playerid][pHouse];
        new 
autos PlayerInfo[playerid][pAuto];
        new 
timer PlayerInfo[playerid][pTime];
        new 
exp PlayerInfo[playerid][pExp];
        new 
chas PlayerInfo[playerid][pChas];
        new 
bank PlayerInfo[playerid][pBank];
        new 
bizz PlayerInfo[playerid][pBizz];
        new 
sex PlayerInfo[playerid][pSex];
        new 
zvezdi PlayerInfo[playerid][pZvezdi];
        new 
timezv PlayerInfo[playerid][pTimeZv];
        new 
jailed PlayerInfo[playerid][pJailed];
        new 
jtime PlayerInfo[playerid][pJailTime];
        new 
pmail PlayerInfo[playerid][pEmail];
        
mysql_real_escape_string(PlayerInfo[playerid][pName], sqlname);
        
mysql_real_escape_string(PlayerInfo[playerid][pPassword], sqlpass);
        
strcat(string,"UPDATE `Accounts` SET `Origin` = '%i', `House` = '%i', `Auto` = '%i', `Time` = '%i', `Exp` = '%i', `Chas` = '%i'",sizeof(string));
        
strcat(string,", `Bank` = '%i', `Bizz` = '%i', `Sex` = '%i', `Zvezdi` = '%i', `TimeZv` = '%i', `Jailed` = '%i', `JailTime` = '%i', `Mail` = '%s' WHERE `ID` = '%i'",sizeof(string));
        
format(querysizeof(query),string,origin,house,autos,timer,exp,chas,bank,bizz,sex,zvezdi,timezv,jailed,jtime,pmail,PlayerInfo[playerid][pID]);
        
mysql_debug(1);
        
mysql_query(query); // Отправляем запрос
    
}
    return 
1;

Вот сохранение


Re: Скриптинг курилка - DartfoL - 28.05.2012

У тебя pEmail не массив, а переменная, поэтому и будет хранить всего лишь один символ


Re: Скриптинг курилка - Hawkins - 28.05.2012

Quote:
Originally Posted by DartfoL
View Post
У тебя pEmail не массив, а переменная, поэтому и будет хранить всего лишь один символ
Помоги нубу тогда))) ЧТо нужно изменить


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

Quote:
Originally Posted by Hawkins
View Post
Помоги нубу тогда))) ЧТо нужно изменить
Ну удали сервер, мод, и будь игроком, спасешь и себя и всех

По сабжу:
Code:
stock SaveAccount1(playerid)
{
	if(PlayerInfo[playerid][pLogged] == true)
	{
		CheckMySQLConnection();
		new query[800], sqlname[MAX_PLAYER_NAME], sqlpass[64];
		mysql_real_escape_string(PlayerInfo[playerid][pName], sqlname);//а эти нам сохранять не надо и без них хорошо
		mysql_real_escape_string(PlayerInfo[playerid][pPassword], sqlpass);//а эти нам сохранять не надо и без них хорошо
		format(query, sizeof(query),"UPDATE `Accounts` SET\
		`Origin` = '%i', `House` = '%i', `Auto` = '%i', `Time` = '%i', `Exp` = '%i',\
		`Chas` = '%i', `Bank` = '%i', `Bizz` = '%i', `Sex` = '%i', `Zvezdi` = '%i',\
		`TimeZv` = '%i', `Jailed` = '%i', `JailTime` = '%i', `Mail` = '%s' WHERE `ID` = '%i'",
		PlayerInfo[playerid][pOrigin],
		PlayerInfo[playerid][pHouse],
		PlayerInfo[playerid][pAuto],
		PlayerInfo[playerid][pTime],
		PlayerInfo[playerid][pExp],
		PlayerInfo[playerid][pChas],
		PlayerInfo[playerid][pBank],
		PlayerInfo[playerid][pBizz],
		PlayerInfo[playerid][pSex],
		PlayerInfo[playerid][pZvezdi],
		PlayerInfo[playerid][pTimeZv],
		PlayerInfo[playerid][pJailed],
		PlayerInfo[playerid][pJailTime],
		PlayerInfo[playerid][pEmail],
		PlayerInfo[playerid][pID]);
		mysql_debug(1);
		mysql_query(query);
	}
	return 1;
}
Скажи кстати IP сервера буду периодически заходить и базу дропать.