PDA

Просмотр полной версии : [Вопрос] Вопрос по .ini



Дёня
16.06.2014, 19:29
Здравствуйте.
У меня на сервере можно иметь Дом, дачу, бизнес, лег.машину, джип, мотоцил, велик, военую технику, воздушный транспорт и грузовик, и для каждого из этой собственности есть файл с расширением .ini

БД SQlite.

Я хочу сделать команду на удаление аккаунта. И вот если как удалить строчку с БД SQlite я знаю как сделать, а вот как мне сделать, что бы в .ini файлах в место ника кому пренадлежит собственность ставилось Sell(это значит, что собственность продается).

И вот, в сем же проблема, как сделать, что бы команда искала ник во всех файлах и если он находит этот Никт, то команда в место ника ставит Sell?

Помогите пожалуйста, я начинающий, а урока подобного не нашел.


Плюсы естественно дам

OKStyle
16.06.2014, 19:51
Если файл имеет маску: номер.ini, то можно сделать цикл, если как-то иначе - надо думать. В какие ini-файлы записывается имя собственника?

Дёня
16.06.2014, 20:04
Если файл имеет маску: номер.ini, то можно сделать цикл, если как-то иначе - надо думать. В какие ini-файлы записывается имя собственника?

Нет, вот так идет
Допустим самолеты - Aero.ini

Внутри:
0=519,1298.9943,1401.6891,11.7422,270.5068,0.00000000,0.000000,0.000000,0.000000,14000000,Sell,-1,-1,0

0- номер самолета
519-ID самолета(вид)
1298.9943,1401.6891,11.7422,270.5068 - x y z (координаты где стоит на рынке )
0.00000000,0.000000,0.000000,0.000000 - x y z (координаты, где припарковал его игрок если купил)
14000000- цена
Sell - означает, что продается, если купили, то пишется в место Sell ник игрока
-1,-1 - цвет
0- не помню :)

~N1cE
16.06.2014, 20:05
Если файл имеет маску: номер.ini, то можно сделать цикл, если как-то иначе - надо думать. В какие ini-файлы записывается имя собственника?

На всех владельцев транспорта идет общий файл.
Aero - воздушные ТС
Bikes - Мотоциклы
Bizz - Бизнесы
Cars - Машины
Dacha - Дачи
Houses - Дома
Jeep - Джипы
Tank - Танки
Truck - truck:D
Vell - Велосипеды
//Такой вопрос... Как имея файл с расширением .amx создать .pwn? :C

Дёня
16.06.2014, 20:15
На всех владельцев транспорта идет общий файл.
Aero - воздушные ТС
Bikes - Мотоциклы
Bizz - Бизнесы
Cars - Машины
Dacha - Дачи
Houses - Дома
Jeep - Джипы
Tank - Танки
Truck - truck:D
Vell - Велосипеды
//Такой вопрос... Как имея файл с расширением .amx создать .pwn? :C

Верно :)

На сколько я знаю, то нельзя и вообще, создай свою тему... :D

OKStyle
16.06.2014, 20:16
Нужно читать каждый файл целиком, искать в нём совпадение по нику владельца и менять на Sell. Смотрите как читается и записывается файл в коде мода - точно также.

Дёня
16.06.2014, 20:24
Нужно читать каждый файл целиком, искать в нём совпадение по нику владельца и менять на Sell. Смотрите как читается и записывается файл в коде мода - точно также.

НУ вот команда продажи самолета:

if(!strcmp(cmd,"/s",true))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid,0xF5D03CAA, "' Не верная команда /carhelp или /авто для просмотра команд '");
return 1;
}
if(!strcmp(tmp,"Sell",true))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Car = GetPlayerVehicleID(playerid);
new result;
new cid;
new pName[60];
new m;
GetPlayerName(playerid,pName,60);
for(new i;i<MAX_AIR;i++)
{
if(Car == Samol[i][cCarID])
{
result = 1;
cid = i;
break;
}
else result = 0;
}
if(result == 1)
{
if(!strcmp(pName, Samol[cid][cOwner]))
{
m = Samol[cid][cCoast];
m /= 2;
Give_Money(playerid,m);
Samol[cid][Cuplena] = 0;
Samol[cid][parkx] = Samol[cid][xcx];
Samol[cid][parky] = Samol[cid][xcy];
Samol[cid][parkz] = Samol[cid][xcz];
Samol[cid][pugol] = Samol[cid][xcrot];
format(Samol[cid][cOwner],60,"Sell");
new str[256];
new str2[60];
format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], Samol[cid][cOwner], Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2,60,"%i",cid);
dini_Set("BuyAll/Aero.ini",str2,str);
pStats[playerid][Myyaht] = 0;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(Car);
Samol[cid][cCarID] = CreateVehicle(Samol[cid][cModel],Samol[cid][xcx],Samol[cid][xcy],Samol[cid][xcz],Samol[cid][xcrot],Samol[cid][cColor1],Samol[cid][cColor2], 500);
DelTextPlan();
TextPlan();
new PlayerVehicleModelID = GetVehicleModel(GetPlayerVehicleID(playerid));
PlayerVehicleModelID -= 400;
format(GlobalInfo,sizeof(GlobalInfo),"..::|| ''%s'' продал %s ||::..", PlayerName(playerid), PlayerVehicle[PlayerVehicleModelID]);
SendClientMessageToAll(0x31CEB3AA, GlobalInfo);
}
else
{
SellCar(playerid);
return 1;
}
}
else
{
SellCar(playerid);
return 1;
}
}
else
{
SellCar(playerid);
return 1;
}
}

OKStyle
16.06.2014, 20:30
format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], Samol[cid][cOwner], Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);

format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);

Дёня
16.06.2014, 20:40
format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], Samol[cid][cOwner], Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);

format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);

И что мне с этим нужно сделать? :)

OKStyle
16.06.2014, 20:53
Код покупки самолёта напиши ещё.

Дёня
16.06.2014, 20:58
Держи :)




if(dialogid == 3506)
{
if(response)
{
new Car = GetPlayerVehicleID(playerid);
new cid;
for(new i;i<MAX_AIR;i++)
{
if(Car == Samol[i][cCarID])
{
cid = i;
break;
}
}
if(status[playerid] <= 18)
{
SendClientMessage(playerid,0xB509F7AA, "' Для покупки данного транспорта вам нужен 19 уровень '");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(pStats[playerid][Myyaht] > 0)
{
SendClientMessage(playerid,admin2,"' Сначала продай старый самолет/вертолет! /s sell '");
RemovePlayerFromVehicle(playerid);
return 1;
}
if(pStats[playerid][Money] < Samol[cid][cCoast])
{
SendClientMessage(playerid,admin2,"' У вас не достаточно денег для покупки '");
RemovePlayerFromVehicle(playerid);
return 1;
}
new pName[60];
Give_Money(playerid,-Samol[cid][cCoast]);
GetPlayerName(playerid,pName,60);
Samol[cid][cOwner] = pName;
pStats[playerid][Myyaht] = Car;
PlayerPlayMusic(playerid);
new str[256];
new str2[60];
format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], Samol[cid][cOwner], Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2,60,"%i",cid);
dini_Set("BuyAll/Aero.ini",str2,str);
DelTextPlan();
TextPlan();
new PlayerVehicleModelID = GetVehicleModel(GetPlayerVehicleID(playerid));
PlayerVehicleModelID -= 400;
format(GlobalInfo,sizeof(GlobalInfo),"..::|| ''%s'' купил себе %s ||::..", PlayerName(playerid), PlayerVehicle[PlayerVehicleModelID]);
SendClientMessageToAll(0x31CEB3AA, GlobalInfo);
}
else RemovePlayerFromVehicle(playerid);
}

OKStyle
16.06.2014, 21:29
Кстати, а почему нельзя сделать игроку автоматическое использование команд продаж при удалении аккаунта?

Дёня
16.06.2014, 21:40
хм.... но а если он offline?

OKStyle
16.06.2014, 22:06
Тогда проще:

// допустим в диалоге, ввели имя в поле input, в ответе обработчик ставим
for(new cid = 0; cid < MAX_AIR; cid++)
{
if(strcmp(Samol[cid][cOwner], inputtext, true) == 0)
{
format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2,60,"%i",cid);
dini_Set("BuyAll/Aero.ini",str2,str);
}
}
// И так далее для всех транспортных средств - там же другие переменные будут.

Дёня
16.06.2014, 23:03
Тогда проще:

// допустим в диалоге, ввели имя в поле input, в ответе обработчик ставим
for(new cid = 0; cid < MAX_AIR; cid++)
{
if(strcmp(Samol[cid][cOwner], inputtext, true) == 0)
{
format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2,60,"%i",cid);
dini_Set("BuyAll/Aero.ini",str2,str);
}
}
// И так далее для всех транспортных средств - там же другие переменные будут.


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


if (!strcmp ("/delakk", cmd, true))
{
if (!IsPlayerAdmin(playerid))
{
SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа.");
return 1;
}
tmp = strtok(cmdtext, idx);
if (!strlen(tmp))
{
SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /removenick [Имя]");
return 1;
}
new query[512];
/*format(query, sizeof(query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query(Database, query);
if(!tmp) return SendClientMessage(playerid, 0xFF0000FF, "Игрока с таким именем не существует");*/
//{
format (query, sizeof(query), "DELETE FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query (Database, query);
SendClientMessage (playerid, 0xdc143cFF, "Ник удален из базы данных.");
//}
return 1;
}

OKStyle
16.06.2014, 23:11
if (!strcmp ("/delakk", cmd, true))
{
if (!IsPlayerAdmin(playerid)) return SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа.");
tmp = strtok(cmdtext, idx);
if(strlen(tmp) < 0) return SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /removenick [Имя]");
new query[512];
/*format(query, sizeof(query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query(Database, query);
if(!tmp) return SendClientMessage(playerid, 0xFF0000FF, "Игрока с таким именем не существует");*/
//{

for(new cid = 0, str[256], str2[60]; cid < MAX_AIR; cid++)
{
if(strcmp(Samol[cid][cOwner], tmp, true, strlen(tmp)) == 0)
{
format(str, sizeof(str), "%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2, sizeof(str2), "%i", cid);
dini_Set("BuyAll/Aero.ini",str2,str);
}
}

format (query, sizeof(query), "DELETE FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query (Database, query);
SendClientMessage (playerid, 0xdc143cFF, "Ник удален из базы данных.");
//}
return 1;
}

Дёня
16.06.2014, 23:36
if (!strcmp ("/delakk", cmd, true))
{
if (!IsPlayerAdmin(playerid)) return SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа.");
tmp = strtok(cmdtext, idx);
if(strlen(tmp) < 0) return SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /removenick [Имя]");
new query[512];
/*format(query, sizeof(query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query(Database, query);
if(!tmp) return SendClientMessage(playerid, 0xFF0000FF, "Игрока с таким именем не существует");*/
//{

for(new cid = 0, str[256], str2[60]; cid < MAX_AIR; cid++)
{
if(strcmp(Samol[cid][cOwner], tmp, true, strlen(tmp)) == 0)
{
format(str, sizeof(str), "%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2, sizeof(str2), "%i", cid);
dini_Set("BuyAll/Aero.ini",str2,str);
}
}

format (query, sizeof(query), "DELETE FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query (Database, query);
SendClientMessage (playerid, 0xdc143cFF, "Ник удален из базы данных.");
//}
return 1;
}
Спасибо большое, сейчас попробую

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



if (!strcmp ("/delakk", cmd, true))
{
if (!IsPlayerAdmin(playerid)) return SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа.");
tmp = strtok(cmdtext, idx);
if(strlen(tmp) < 0) return SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /removenick [Имя]");
new query[512];
/*format(query, sizeof(query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query(Database, query);
if(!tmp) return SendClientMessage(playerid, 0xFF0000FF, "Игрока с таким именем не существует");*/
//{

for(new cid = 0, str[256], str2[60]; cid < MAX_AIR; cid++)
{
if(strcmp(Samol[cid][cOwner], tmp, true, strlen(tmp)) == 0)
{
format(str, sizeof(str), "%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", Samol[cid][cModel], Samol[cid][xcx], Samol[cid][xcy], Samol[cid][xcz], Samol[cid][xcrot], Samol[cid][parkx], Samol[cid][parky], Samol[cid][parkz], Samol[cid][pugol], Samol[cid][cCoast], "Sell", Samol[cid][cColor1], Samol[cid][cColor2], Samol[cid][Cuplena]);
format(str2, sizeof(str2), "%i", cid);
dini_Set("BuyAll/Aero.ini",str2,str);
}
}

format (query, sizeof(query), "DELETE FROM `USERS` WHERE `NAME` = '%s'", tmp);
db_query (Database, query);
SendClientMessage (playerid, 0xdc143cFF, "Ник удален из базы данных.");
//}
return 1;
}

неа... собственность так и остается на игроке, хоть со SQlite успешно удаляется...

OKStyle
17.06.2014, 08:21
Смотри код загрузки собственности (при старте мода) и выгрузки. Ответ там.