AlpHarD-GameS
Новичок
Здравствуйте. Нужен совет опытных скриптеров. Хочу узнать как правильно оптимизировать данные MySQL запросы:
Вот несколько примеров, как у меня на данный момент проходят некоторые важные функции..
Получение паспорта. Диалоги имени, фамилии, даты рождения, бла бла бла.. При закрытии последнего диалога, идет отсылка на сток для сохранения паспортных данных в БД:
По такому же принципу работает получение мед. страховки, но права там, сохраняется только дата получения:
Так же есть отдельный сток для сохранения денег. Для того что бы ровнять значение денег в HUD с значением из БД.
Ну и естественно, куда же без него, сток сохранения данных в целом. Но который уже не содержит в себе данные паспорта и мед страховки..
Вот несколько примеров, как у меня на данный момент проходят некоторые важные функции..
Получение паспорта. Диалоги имени, фамилии, даты рождения, бла бла бла.. При закрытии последнего диалога, идет отсылка на сток для сохранения паспортных данных в БД:
stock Passport(playerid)
{
if(!PlayerLogged[playerid]) return 1;
new passdate[24];
new y,m,d;
getdate(y,m,d);
format(passdate, sizeof(passdate), "%d.%d.%d",d,m,y);
new databirth[24];
format(databirth, sizeof(databirth), "%d.%d.%d",PInfo[pPassDay],PInfo[pPassMonth],PInfo[pPassYear]);
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pPassName`='%s',`pPassFam`='%s',`pDataBirth`='%s',`pAge`='%d',`pDataPassport`='%e'",
PInfo[pPassName],
PInfo[pPassFam],
databirth,
PInfo[pAge],
passdate);
mysql_function_query(MySQL, query, false,"","");
return 1;
}
{
if(!PlayerLogged[playerid]) return 1;
new passdate[24];
new y,m,d;
getdate(y,m,d);
format(passdate, sizeof(passdate), "%d.%d.%d",d,m,y);
new databirth[24];
format(databirth, sizeof(databirth), "%d.%d.%d",PInfo[pPassDay],PInfo[pPassMonth],PInfo[pPassYear]);
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pPassName`='%s',`pPassFam`='%s',`pDataBirth`='%s',`pAge`='%d',`pDataPassport`='%e'",
PInfo[pPassName],
PInfo[pPassFam],
databirth,
PInfo[pAge],
passdate);
mysql_function_query(MySQL, query, false,"","");
return 1;
}
По такому же принципу работает получение мед. страховки, но права там, сохраняется только дата получения:
stock MedCard(playerid)
{
if(!PlayerLogged[playerid]) return 1;
new medcarddate[24];
new y,m,d;
getdate(y,m,d);
format(medcarddate, sizeof(medcarddate), "%d.%d.%d",d,m,y);
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pDataMedCard`='%s'",medcarddate);
mysql_function_query(MySQL, query, false,"","");
return 1;
}
{
if(!PlayerLogged[playerid]) return 1;
new medcarddate[24];
new y,m,d;
getdate(y,m,d);
format(medcarddate, sizeof(medcarddate), "%d.%d.%d",d,m,y);
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pDataMedCard`='%s'",medcarddate);
mysql_function_query(MySQL, query, false,"","");
return 1;
}
stock SaveMoney(playerid)
{
if(!PlayerLogged[playerid]) return 1;
if(GetPlayerMoney(playerid) != PInfo[pCash])
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PInfo[pCash]);
}
SavePlayer(playerid);
return 1;
}
{
if(!PlayerLogged[playerid]) return 1;
if(GetPlayerMoney(playerid) != PInfo[pCash])
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PInfo[pCash]);
}
SavePlayer(playerid);
return 1;
}
stock SavePlayer(playerid)
{
if(!PlayerLogged[playerid]) return 1;
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pLevel`='%i',`pExp`='%i',`pSex`='%i',`pSkin`='%i',`pCash`='%d',`pHP`='%f',`pArmour`='%f',`pNat`='%i',`pState`='%i',`pPassport`='%d',`pMedCard`='%d'",
PInfo[pLevel],
PInfo[pExp],
PInfo[pSex],
PInfo[pSkin],
PInfo[pCash],
PInfo
{
if(!PlayerLogged[playerid]) return 1;
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pLevel`='%i',`pExp`='%i',`pSex`='%i',`pSkin`='%i',`pCash`='%d',`pHP`='%f',`pArmour`='%f',`pNat`='%i',`pState`='%i',`pPassport`='%d',`pMedCard`='%d'",
PInfo[pLevel],
PInfo[pExp],
PInfo[pSex],
PInfo[pSkin],
PInfo[pCash],
PInfo
PHP:
,
PInfo[pArmour],
PInfo[pNat],
PInfo[pState],
PInfo[pPassport],
PInfo[pMedCard]);
mysql_function_query(MySQL, query, false,"","");
return 1;
}
[/SPOILER]
Как будет лучше записать всё это так, что бы количество обращений к БД снизить до минимума, а эффективность повысить?
