PDA

Просмотр полной версии : [Вопрос] Оптимизация команды



#NickName
23.01.2016, 21:41
Привет всем скриптерам pro-pawn.
Сегодня я хотел обратиться и спросить,как можно оптимизировать данную команду просто скажите?
А решение я сам уже)

CMD:addhouse(playerid,params[])
{
LOGINS
flood
adm
if(PlayerInfo[playerid][pAdmin] < 6)return SCM(playerid,COLOR_GREY,ERROR);
if(sscanf(params,"ii",params[0],params[1]))return SCM(playerid,COLOR_GREY,"Совет: /addhouse [price][class]");
if(params[1] < 1 || params[1] > 4)return SCM(playerid,COLOR_GREY,"Класс дома от 1 до 4!");
if(params[0] < 1000 || params[0] > 10000000)return SCM(playerid,COLOR_GREY,"Цена от 1000 до 10кк!");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
HouseInfo[TOTALHOUSE+1][hPrice] = params[0];
HouseInfo[TOTALHOUSE+1][hBuyPrice] = 0;
HouseInfo[TOTALHOUSE+1][hLock] = 0;
HouseInfo[TOTALHOUSE+1][hEntrx] = x;
HouseInfo[TOTALHOUSE+1][hEntry] = y;
HouseInfo[TOTALHOUSE+1][hEntrz] = z;
switch(params[1])
{
case 1:
{
HouseInfo[TOTALHOUSE+1][hInt] = 4;
HouseInfo[TOTALHOUSE+1][hExitx] = 261.1165;
HouseInfo[TOTALHOUSE+1][hExity] = 1287.2197;
HouseInfo[TOTALHOUSE+1][hExitz] = 1080.2578;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "D", 0, strlen("D"), 16);
}
case 2:
{
HouseInfo[TOTALHOUSE+1][hInt] = 10;
HouseInfo[TOTALHOUSE+1][hExitx] = 24.3769;
HouseInfo[TOTALHOUSE+1][hExity] = 1341.1829;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.375;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "C", 0, strlen("D"), 16);
}
case 3:
{
HouseInfo[TOTALHOUSE+1][hInt] = 7;
HouseInfo[TOTALHOUSE+1][hExitx] = 225.630997;
HouseInfo[TOTALHOUSE+1][hExity] = 1022.479980;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.069946;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "B", 0, strlen("D"), 16);
}
case 4:
{
HouseInfo[TOTALHOUSE+1][hInt] = 6;
HouseInfo[TOTALHOUSE+1][hExitx] = 234.2826;
HouseInfo[TOTALHOUSE+1][hExity] = 1065.229;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.2101;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "A", 0, strlen("D"), 16);
}
}
TOTALHOUSE++;
HouseInfo[TOTALHOUSE][hVirtual] = TOTALHOUSE;
strmid(HouseInfo[TOTALHOUSE][hOwner], "None", 0, strlen("None"), 24);
HouseInfo[TOTALHOUSE][hMIcon] = CreateDynamicMapIcon(HouseInfo[TOTALHOUSE][hEntrx], HouseInfo[TOTALHOUSE][hEntry], HouseInfo[TOTALHOUSE][hEntrz], 31, 0,-1,-1,-1,160.0);
HouseInfo[TOTALHOUSE][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[TOTALHOUSE][hEntrx], HouseInfo[TOTALHOUSE][hEntry], HouseInfo[TOTALHOUSE][hEntrz]);
SCM(playerid, COLOR_YELLOW," Дом успешно создан! ");
static house[] = "INSERT INTO `house` (hID,hEntrx,hEntry,hEntrz,hExitx,hExity,hExitz,hOwner,hDiscript,hPrice,hBuyPrice,hInt,hVirtual,hLock) VALUES ('%d','%f','%f','%f','%f','%f','%f','%s','%s','%d','%d','%d','%d','%d')";
new str_house[sizeof(house)+200-28];
format(str_house, sizeof(str_house), house,
HouseInfo[TOTALHOUSE][hID],
HouseInfo[TOTALHOUSE][hEntrx],
HouseInfo[TOTALHOUSE][hEntry],
HouseInfo[TOTALHOUSE][hEntrz],
HouseInfo[TOTALHOUSE][hExitx],
HouseInfo[TOTALHOUSE][hExity],
HouseInfo[TOTALHOUSE][hExitz],
HouseInfo[TOTALHOUSE][hOwner],
HouseInfo[TOTALHOUSE][hDiscript],
HouseInfo[TOTALHOUSE][hPrice],
HouseInfo[TOTALHOUSE][hBuyPrice],
HouseInfo[TOTALHOUSE][hInt],
HouseInfo[TOTALHOUSE][hVirtual],
HouseInfo[TOTALHOUSE][hLock]);
mysql_function_query(MysqlConnect_ID, str_house, false, "", "");
printf("Дом %d создан\n\n\n%s\n\n", TOTALHOUSE,str_house);
return 1;
}
Заранее спасибо)

VVWVV
23.01.2016, 21:45
Для того чтобы максимально оптимизировать вашу команду — нужно избавится от RLS-подобного кода.

#NickName
23.01.2016, 21:49
Для того чтобы максимально оптимизировать вашу команду — нужно избавится от RLS-подобного кода.

Пример что не использовать?

Роуди.
23.01.2016, 21:59
Ну, для начала: Миф о скриптинге #4 (http://pro-pawn.ru/showthread.php?12988-%D0%9C%D0%B8%D1%84%D1%8B-%D0%BE-Pawn-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3%D0%B5-4)

#NickName
23.01.2016, 22:13
Ну, для начала: Миф о скриптинге #4 (http://pro-pawn.ru/showthread.php?12988-%D0%9C%D0%B8%D1%84%D1%8B-%D0%BE-Pawn-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3%D0%B5-4)

эммм,в данном коде лучше использовать одну переменную и один массив?

- - - Добавлено - - -

Слушай те вот к примеру команда


CMD:gm(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") == 0) return 1;
if(PlayerInfo[playerid][pAdminLevel] < 1) return 1;
if(sscanf(params, "u", params[0])) return SendMe(playerid, COLOR_WHITE, "Использование: /sp [ID/Часть ника]");
#define id params[0]
if(GetPVarInt(id, "Logged") == 0) return SendMe(playerid, COLOR_GREY, "Игрок не подключен");
new Float:x, Float:y, Float:z;
GetPlayerPos(id, x, y, z);
CreateExplosion(x, y, z, 5, 0.5);
#undef id
return 1;
}
Можно же дефайны юзать не создавая переменные,так же?

Роуди.
23.01.2016, 22:14
Мат.

#NickName
23.01.2016, 22:16
Мат

хахаха,бом бом

Объясни тогда)
как нормально что и куда сделать,но оскорбления не выход)
И да в павно уже год больше(не каждый день сидел и смотрел за редактором),но оптимизацию не разбирал)

Роуди.
23.01.2016, 22:18
хахаха,бом бом

Объясни тогда)
как нормально что и куда сделать,но оскорбления не выход)
И да в павно уже год больше,но оптимизацию не разбирал)

Нет, не объясню.

Почему тот же Londlem, Deimos, Daniel_Cortez методом проб и ошибок пытались улучшить свой код, а ты идешь сразу на все готовое, так нельзя.

#NickName
23.01.2016, 22:22
Нет, не объясню.

Почему тот же Londlem, Deimos, Daniel_Cortez методом проб и ошибок пытались улучшить свой код, а ты идешь сразу на все готовое, так нельзя.

Я те сказал асади

я же не сказал "Аптимизируйте мне команду,плисс,прошу,рибят"
Я задал вопрос как можно оптимизировать команду)

Роуди.
23.01.2016, 22:23
Я те сказал асади

я же не сказал "Аптимизируйте мне команду,плисс,прошу,рибят"
Я задал вопрос как можно оптимизировать команду)

Переписать код заного, такой подойдет ответ?

#NickName
23.01.2016, 22:31
Переписать код заного, такой подойдет ответ?

Отличный ответ)

Роуди.
23.01.2016, 22:33
Отличный ответ)

например ты длину ячейки запроса в БД не правильно высчитал, могу скинуть пример как нужно, а дальше сам.

#NickName
23.01.2016, 22:38
Переписать код заного, такой подойдет ответ?

ага

- - - Добавлено - - -


например ты длину ячейки запроса в БД не правильно высчитал, могу скинуть пример как нужно, а дальше сам.

Ожидаю)

Роуди.
23.01.2016, 22:46
CMD:addhouse(playerid,params[])
{
/* Не использовать такие дефайны в каждой команде,
Подробней тут: http://pro-pawn.ru/showthread.php?1028-DC_CMD-v2-8-(23-03-14)8*/

new
house_price,
house_class;

if(PlayerInfo[playerid][pAdmin] < 6)return SCM(playerid,COLOR_GREY,ERROR);
if(sscanf(params,"ii", house_price, house_class]))return SCM(playerid,COLOR_GREY,"Совет: /addhouse [price][class]");
if(house_class < 1 || house_class > 4)return SCM(playerid,COLOR_GREY,"Класс дома от 1 до 4!");
if(house_price < 1000 || house_price > 10000000)return SCM(playerid,COLOR_GREY,"Цена от 1000 до 10кк!");

new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);

HouseInfo[TOTALHOUSE+1][hPrice] = house_price;
HouseInfo[TOTALHOUSE+1][hBuyPrice] = 0;
HouseInfo[TOTALHOUSE+1][hLock] = 0;
HouseInfo[TOTALHOUSE+1][hEntrx] = x;
HouseInfo[TOTALHOUSE+1][hEntry] = y;
HouseInfo[TOTALHOUSE+1][hEntrz] = z;

switch(house_class)
{
case 1:
{
HouseInfo[TOTALHOUSE+1][hInt] = 4;
HouseInfo[TOTALHOUSE+1][hExitx] = 261.1165;
HouseInfo[TOTALHOUSE+1][hExity] = 1287.2197;
HouseInfo[TOTALHOUSE+1][hExitz] = 1080.2578;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "D", 0, strlen("D"), 16);
}
case 2:
{
HouseInfo[TOTALHOUSE+1][hInt] = 10;
HouseInfo[TOTALHOUSE+1][hExitx] = 24.3769;
HouseInfo[TOTALHOUSE+1][hExity] = 1341.1829;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.375;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "C", 0, strlen("D"), 16);
}
case 3:
{
HouseInfo[TOTALHOUSE+1][hInt] = 7;
HouseInfo[TOTALHOUSE+1][hExitx] = 225.630997;
HouseInfo[TOTALHOUSE+1][hExity] = 1022.479980;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.069946;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "B", 0, strlen("D"), 16);
}
case 4:
{
HouseInfo[TOTALHOUSE+1][hInt] = 6;
HouseInfo[TOTALHOUSE+1][hExitx] = 234.2826;
HouseInfo[TOTALHOUSE+1][hExity] = 1065.229;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.2101;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "A", 0, strlen("D"), 16);
}
}
TOTALHOUSE++;

HouseInfo[TOTALHOUSE][hVirtual] = TOTALHOUSE;
strmid(HouseInfo[TOTALHOUSE][hOwner], "None", 0, strlen("None"), 24);

HouseInfo[TOTALHOUSE][hMIcon] = CreateDynamicMapIcon(HouseInfo[TOTALHOUSE][hEntrx], HouseInfo[TOTALHOUSE][hEntry], HouseInfo[TOTALHOUSE][hEntrz], 31, 0,-1,-1,-1,160.0);
HouseInfo[TOTALHOUSE][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[TOTALHOUSE][hEntrx], HouseInfo[TOTALHOUSE][hEntry], HouseInfo[TOTALHOUSE][hEntrz]);

SCM(playerid, COLOR_YELLOW," Дом успешно создан! ");
static const
frm_string[] = "INSERT INTO `house` (`hID`, `hEnterx`)

new query_string[sizeof(house)-2+11-2+11]; // дальше сам подсчитаешь
format(query_string, sizeof(query_string), frm_string, HouseInfo[TOTALHOUSE][hID], HouseInfo[TOTALHOUSE][hEntrx],

mysql_function_query(MysqlConnect_ID, str_house, false, "", "");
printf("Дом %d создан\n\n\n%s\n\n", TOTALHOUSE,str_house);
return 1;

}

Как-то так..

L0ndl3m
23.01.2016, 22:52
static const
frm_string[] = "INSER INTO `house` (`hID`, `hEnterx`)

No way...

Роуди.
23.01.2016, 23:03
No way...

у всех бывают тяжелые дни

Desulaid
23.01.2016, 23:08
Сначала вы работаете с TOTALHOUSE как с индексом + 1, потом сам TOTALHOUSE увеличиваете. Разве нельзя сделать это сразу?

Еще можно оcharовать массив :D.


HouseInfo[TOTALHOUSE][hDiscript] = 'A'

А нельзя сделать так?


HouseInfo[TOTALHOUSE][hOwner] = "None";

#NickName
23.01.2016, 23:14
Сначала вы работаете с TOTALHOUSE как с индексом + 1, потом сам TOTALHOUSE увеличиваете. Разве нельзя сделать это сразу?

Еще можно оcharовать массив :D.


HouseInfo[TOTALHOUSE][hDiscript] = 'A'

А нельзя сделать так?


HouseInfo[TOTALHOUSE][hOwner] = "None";

Антон,точно)

#NickName
23.01.2016, 23:55
CMD:addhouse(playerid,params[])
{
/* Не использовать такие дефайны в каждой команде,
Подробней тут: http://pro-pawn.ru/showthread.php?1028-DC_CMD-v2-8-(23-03-14)8*/

new
house_price,
house_class;

if(PlayerInfo[playerid][pAdmin] < 6)return SCM(playerid,COLOR_GREY,ERROR);
if(sscanf(params,"ii", house_price, house_class]))return SCM(playerid,COLOR_GREY,"Совет: /addhouse [price][class]");
if(house_class < 1 || house_class > 4)return SCM(playerid,COLOR_GREY,"Класс дома от 1 до 4!");
if(house_price < 1000 || house_price > 10000000)return SCM(playerid,COLOR_GREY,"Цена от 1000 до 10кк!");

new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);

HouseInfo[TOTALHOUSE+1][hPrice] = house_price;
HouseInfo[TOTALHOUSE+1][hBuyPrice] = 0;
HouseInfo[TOTALHOUSE+1][hLock] = 0;
HouseInfo[TOTALHOUSE+1][hEntrx] = x;
HouseInfo[TOTALHOUSE+1][hEntry] = y;
HouseInfo[TOTALHOUSE+1][hEntrz] = z;

switch(house_class)
{
case 1:
{
HouseInfo[TOTALHOUSE+1][hInt] = 4;
HouseInfo[TOTALHOUSE+1][hExitx] = 261.1165;
HouseInfo[TOTALHOUSE+1][hExity] = 1287.2197;
HouseInfo[TOTALHOUSE+1][hExitz] = 1080.2578;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "D", 0, strlen("D"), 16);
}
case 2:
{
HouseInfo[TOTALHOUSE+1][hInt] = 10;
HouseInfo[TOTALHOUSE+1][hExitx] = 24.3769;
HouseInfo[TOTALHOUSE+1][hExity] = 1341.1829;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.375;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "C", 0, strlen("D"), 16);
}
case 3:
{
HouseInfo[TOTALHOUSE+1][hInt] = 7;
HouseInfo[TOTALHOUSE+1][hExitx] = 225.630997;
HouseInfo[TOTALHOUSE+1][hExity] = 1022.479980;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.069946;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "B", 0, strlen("D"), 16);
}
case 4:
{
HouseInfo[TOTALHOUSE+1][hInt] = 6;
HouseInfo[TOTALHOUSE+1][hExitx] = 234.2826;
HouseInfo[TOTALHOUSE+1][hExity] = 1065.229;
HouseInfo[TOTALHOUSE+1][hExitz] = 1084.2101;
strmid(HouseInfo[TOTALHOUSE+1][hDiscript], "A", 0, strlen("D"), 16);
}
}
TOTALHOUSE++;

HouseInfo[TOTALHOUSE][hVirtual] = TOTALHOUSE;
strmid(HouseInfo[TOTALHOUSE][hOwner], "None", 0, strlen("None"), 24);

HouseInfo[TOTALHOUSE][hMIcon] = CreateDynamicMapIcon(HouseInfo[TOTALHOUSE][hEntrx], HouseInfo[TOTALHOUSE][hEntry], HouseInfo[TOTALHOUSE][hEntrz], 31, 0,-1,-1,-1,160.0);
HouseInfo[TOTALHOUSE][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[TOTALHOUSE][hEntrx], HouseInfo[TOTALHOUSE][hEntry], HouseInfo[TOTALHOUSE][hEntrz]);

SCM(playerid, COLOR_YELLOW," Дом успешно создан! ");
static const
frm_string[] = "INSERT INTO `house` (`hID`, `hEnterx`)

new query_string[sizeof(house)-2+11-2+11]; // дальше сам подсчитаешь
format(query_string, sizeof(query_string), frm_string, HouseInfo[TOTALHOUSE][hID], HouseInfo[TOTALHOUSE][hEntrx],

mysql_function_query(MysqlConnect_ID, str_house, false, "", "");
printf("Дом %d создан\n\n\n%s\n\n", TOTALHOUSE,str_house);
return 1;

}

Как-то так..

Спасибо)

Роуди.
24.01.2016, 00:25
Можно пожалуйста про подсчёт по подробнее
static const
frm_string[] = "INSERT INTO `house` (`hID`, `hEnterx`)

new query_string[sizeof(house)-2+11-2+11]; // дальше сам подсчитаешь
format(query_string, sizeof(query_string), frm_string, HouseInfo[TOTALHOUSE][hID], HouseInfo[TOTALHOUSE][hEntrx],

Учитель из меня не очень, но вот в учебнике Кортеза (http://pro-pawn.ru/showthread.php?4082-%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA-Pro-Pawn-ru) доходчиво эта фича объяснена.