CMD:createpalatka(playerid, params[])
{
if(GetPVarInt(playerid, "LOGIN") == 0) return SendClientMessage(playerid, COLOR_LIGHTRED,"Авторизуйтесь перед использованием команд!");
if(sscanf(params, "ds[64]", params[0],params[1])) return send(playerid, COLOR_WHITE, "Используйте /createpalatka [цена][название]");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x,y,z);
new query[333];
totalp += 1, totalid += 1;
format(query, sizeof(query), "INSERT INTO `Rinok` (Name_p, Owner_p, x, y, z, radius, Price_p) VALUE ('%s', 'NONE', '%f', '%f', '%f', '%f', '%d')",params[1], x, y, z, 2.0, params[0]);
mysql_tquery(dbHandle, query, "", "");
PalatkaInfo[totalp][ID_p] = totalid;
PalatkaInfo[totalp][Price_p] = params[0];
strmid(PalatkaInfo[totalp][Name_p], params[1], 0, 300);
strmid(PalatkaInfo[totalp][Owner_p],"NONE", 0 ,300);
PalatkaInfo[totalp][x_p] = x;
PalatkaInfo[totalp][y_p] = y;
PalatkaInfo[totalp][z_p] = z;
PalatkaInfo[totalp][r_p] = 2.0;
new string[64];
format(string,sizeof(string),"Палатка продается [ %d $ ]\n/buyp чтобы купить",PalatkaInfo[totalp][Price_p]);
PalatkaInfo[totalp][palatkai] = CreateDynamic3DTextLabel(string, COLOR_LIGHTGREEN, PalatkaInfo[totalp][x_p], PalatkaInfo[totalp][y_p], PalatkaInfo[totalp][z_p], 10.0);
SendClientMessage(playerid, COLOR_WHITE, "Палатка успешно создана");
return true;
}
CMD:buyp(playerid)
{
if(GetPVarInt(playerid, "LOGIN") == 0) return SendClientMessage(playerid, COLOR_LIGHTRED,"Авторизуйтесь перед использованием команд!");
for(new idx;idx!=totalp+1;idx++)
{
if(IsPlayerInRangeOfPoint(playerid, PalatkaInfo[idx][r_p], PalatkaInfo[idx][x_p],PalatkaInfo[idx][y_p],PalatkaInfo[idx][z_p]))
{
if(strcmp(PalatkaInfo[idx][Owner_p], "NONE", true)) return send(playerid, COLOR_LIGHTRED, "Эта торговая лавка не продается");
if(Player[playerid][Palatkaid] > 0) return send(playerid, COLOR_LIGHTRED, "У вас уже есть палатка!");
if(Player[playerid][Money] < PalatkaInfo[idx][Price_p]) return send(playerid, COLOR_LIGHTRED, "У вас не хватает денег для покупки!");
GiveMoney(playerid, -PalatkaInfo[idx][Price_p]);
SendClientMessage(playerid, -1, "Вы приобрели {66cc33}торговую лавку");
SendClientMessage(playerid, COLOR_WHITE, "Меню управления лавкой {66cc33}/menup");
Player[playerid][Palatkaid] = PalatkaInfo[idx][ID_p];
strmid(PalatkaInfo[idx][Owner_p], UserName(playerid), 0, 64, 300);
DestroyDynamic3DTextLabel(PalatkaInfo[idx][palatkai]);
new string[128];
format(string,sizeof(string),"{ca670c}Торговая лавка:{ffffff} %s [ID: %d]\n{ca670c}Владелец: {ffffff}%s",PalatkaInfo[idx][Name_p],PalatkaInfo[idx][ID_p] ,PalatkaInfo[idx][Owner_p]);
PalatkaInfo[idx][palatkai] = CreateDynamic3DTextLabel(string, -1, PalatkaInfo[idx][x_p], PalatkaInfo[idx][y_p], PalatkaInfo[idx][z_p],10.0);
break;
}
else
{
printf("Рядом нет палаток");
}
}
return true;
}
CMD:buyp(playerid)
{
if(GetPVarInt(playerid, "LOGIN") == 0) return SendClientMessage(playerid, COLOR_LIGHTRED,"Авторизуйтесь перед использованием команд!");
if(Player[playerid][Palatkaid] > 0) return send(playerid, COLOR_LIGHTRED, "У вас уже есть палатка!");
for(new idx;idx<=totalp;idx++)
{
if(IsPlayerInRangeOfPoint(playerid, PalatkaInfo[idx][r_p], PalatkaInfo[idx][x_p],PalatkaInfo[idx][y_p],PalatkaInfo[idx][z_p]))
{
if(strcmp(PalatkaInfo[idx][Owner_p], "NONE", true)) return send(playerid, COLOR_LIGHTRED, "Эта торговая лавка не продается");
if(Player[playerid][Money] < PalatkaInfo[idx][Price_p]) return send(playerid, COLOR_LIGHTRED, "У вас не хватает денег для покупки!");
GiveMoney(playerid, -PalatkaInfo[idx][Price_p]);
SendClientMessage(playerid, -1, "Вы приобрели {66cc33}торговую лавку");
SendClientMessage(playerid, COLOR_WHITE, "Меню управления лавкой {66cc33}/menup");
Player[playerid][Palatkaid] = PalatkaInfo[idx][ID_p];
strmid(PalatkaInfo[idx][Owner_p], UserName(playerid), 0, 64, 300);
DestroyDynamic3DTextLabel(PalatkaInfo[idx][palatkai]);
new string[128];
format(string,sizeof(string),"{ca670c}Торговая лавка:{ffffff} %s [ID: %d]\n{ca670c}Владелец: {ffffff}%s",PalatkaInfo[idx][Name_p],PalatkaInfo[idx][ID_p] ,PalatkaInfo[idx][Owner_p]);
PalatkaInfo[idx][palatkai] = CreateDynamic3DTextLabel(string, -1, PalatkaInfo[idx][x_p], PalatkaInfo[idx][y_p], PalatkaInfo[idx][z_p],10.0);
break;
}
}
return true;
}
Так же приравнял totalid = cache_insert_id(dbHandle); в паблике загрузки палаток.
|
Ну так и получай его из базы функцией возвращающей последний вставленный ID, а так у тебя возможна ошибка. Например буквально пару месяцев назад я столкнулся с базой у которой автоинкримент прибавлял не по 1, а по 2 и все ключи в базе были четные! |