05:33
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
[Решено] Где хранить данные
hitmanyДата: Вторник, 05.07.2011, 12:50 | Сообщение # 1
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
нужно хранить числа.
изначально это от 1 до 686. так чтобы можно было взять любое число(удалив его из данных) и добавлять числа.

SanSayДата: Вторник, 05.07.2011, 13:03 | Сообщение # 2
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
hitmany, целиком скажи как и где это будет использоваться


simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
hitmanyДата: Вторник, 05.07.2011, 13:14 | Сообщение # 3
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
1 до 686 это номера vehicleid личного транспорта(изнчально является буфером)
Code
for(new i=1; i < 686; i++)
{
freeownedcars[i] = AddStaticVehicleEx(400,0.000000,0.000000,10000.000000,1.0,-1,-1,-1);
}


когда игрок залогинится берём номер vechicleid из буфера
создаём машину
удаляем номер машины из буфера

игрок отключается - добавляем номер машины в буфер
делаем destroyvehicle

SanSayДата: Вторник, 05.07.2011, 15:03 | Сообщение # 4
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
hitmany,
[cut noguest=ченить типо этого]#define MAX_MYCAR 786
new cash[MAX_MYCAR];
new car[MAX_PLAYERS];
в коннект
for(new i=1; i < cash[MAX_MYCAR]; i++)
{
if(cash[i] == 0)
{
freeownedcars[i] = AddStaticVehicleEx(400,0.000000,0.000000,10000.000000,1.0,-1,-1,-1);
cash[i] = 1;
car[playerid] = i;
}
}

disconnect
DestroyVehicle(car[playerid]);
cash[car[playerid]] = 0;
car[playerid] = 0;[/cut]
думаю можно это какнить по проще для серва конечно организовать... но на скорую руку это пришло в голову.



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
hitmanyДата: Среда, 06.07.2011, 11:45 | Сообщение # 5
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
у каждого игрока может быть 3 машины,одной переменной не получится
я решил сделать кеш в текстовом файле

VagrantДата: Среда, 06.07.2011, 17:26 | Сообщение # 6
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
hitmany, ID и координаты Машины хранятся в файле игрока. Если так то при входе на сервер открывается файл игрока. В нём проверяется сколько машин у него. И каждую машину ставит на свои координаты. То есть если всё так как я понял. То можно для этого сделать так:
#define MAX_PL_CAR 3 // Максимальное число машин которое может иметь игрок
new plcar[MAX_PLAYERS][MAX_PL_CAR];
new Float:placarkord[4];
Теперь просто в эти переменные записваем координаты машины и порядковый номер в plcar;
plcarkord[0] = X, plcarkord[1] = Y, plcarkord[2] = Z, plcarkord[3] = A; // Записываем координаты из файла в переменную
Далее в коде чтения файла с помощью цикла который там должен использоваться узнаём сколько машин у игрока, и с помощью цикла записываем в массив порядковый номер машины:
plcar[playerid][i] = AddStaticVehicle(402,plcarkord[0],plcarkord[1],plcarkord[2],plcarkord[3],30,30); /* И тем самым сразу же её и создаём. Главное не забыть перед циклом while переменную создать i и пробовлять по 1 к ней в цикле. i++ в начале. */
Далее в OnPlayerDisconnect:
for(new c=0;c != MAX_PL_CAR;c++) if(plcar[playerid][c] != 0) DestroyVehicle(plcar[playerid][c]); /* Если игрок выходит пробиваем переменную в которой содержатся порядковый номер его машины. Тут же и делаем запись в файл координат его машины ну и ID */

P.S.: 777-е сообщение, надеюсь принесёт пользу. ;)



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!


Сообщение отредактировал Vagrant - Среда, 06.07.2011, 17:29
hitmanyДата: Среда, 21.12.2011, 20:26 | Сообщение # 7
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
наврятли получится хранить у игрока
когда человек садится в машину нужно определить что она является частной собственностью,по vehicleid и писать кому она принадлежит
есть ли возможность создавать авто под определенным vehicleid?
диапазон номеров vehicleid от 400 до 1000,при заходе игрока брать неиспользованный номер vehicleid заменять на свой CreateVehicle
после выхода игрока удалять его личное авто и добавлять к списку номер
как такое хранить?
[table][tr][td]vehicleid
[/td][td]номер машины из базы машин игроков[/td][/tr][tr][td]456[/td][td]4765[/td][/tr][tr][td]457[/td][td]4324[/td][/tr][/table]
vehicleid - id транпорта,не модель
--

Добавлено (21.12.2011, 20:26)
---------------------------------------------
up


Сообщение отредактировал hitmany - Среда, 21.12.2011, 20:25
EakwarpДата: Среда, 21.12.2011, 21:21 | Сообщение # 8
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Quote (hitmany)
как такое хранить?

Легко, хранить как есть, при обработке прибавлять 400.
т.е. :
new CarBDID[600];
Использовать в виде
new veh=GetPlayerVehicleID(playerid);
if(CarBDID[veh-400]) { }
Quote (hitmany)
есть ли возможность создавать авто под определенным vehicleid?

Нет, но можно сохранять ид машины в переменную.



More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
hitmanyДата: Четверг, 22.12.2011, 17:40 | Сообщение # 9
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
в начале
new CarBDID[2000];

в OnPlayerLogin
Code

if(PlayerInfo[playerid][pPcarkey] != 0)
{
printf("pPcarkey1 run");
new carid = PlayerInfo[playerid][pPcarkey];
new vehid = CreateVehicle(CarInfo[carid][cModel],CarInfo[carid][cLocationx],CarInfo[carid][cLocationy],CarInfo[carid][cLocationz]+1.0,CarInfo[carid][cAngle],CarInfo[carid][cColorOne],CarInfo[carid][cColorTwo],60000);
CarBDID[vehid] = carid;
printf("carid =%d",carid);
printf("vehid =%d",vehid);
printf("CarBDID =%d",CarBDID[vehid]);
if(CarInfo[carid][cPaintjob] != 0)
{
ChangeVehiclePaintjob(vehid, CarInfo[carid][cPaintjob]);
}
SetVehicleVirtualWorld(vehid, CarInfo[carid][cVirWorld]);
SetVehicleModifications(vehid,carid);
}


CarBDID[vehid] не приравнивается,но машина создаётся при авторитизации игрока

из-за этого не работает в onplayerdisconnect
Code
if(PlayerInfo[playerid][pPcarkey] != 0)
    {
    new ownkey = PlayerInfo[playerid][pPcarkey];
    printf("ownkey =%d",ownkey);
    for(new vehid=1; vehid<2000; vehid++)
    {
       if(CarBDID[vehid] == ownkey)
       {
          DestroyVehicle(vehid);
          CarBDID[vehid] = 0;
       printf("destroy vehid=%d",vehid);
       }
    }
    }



Сообщение отредактировал hitmany - Четверг, 22.12.2011, 17:42
s3apДата: Четверг, 22.12.2011, 21:35 | Сообщение # 10
Местный
Группа: Продвинутые
Сообщений: 570
Награды: 7
Город: Саратов
Репутация: 382
Замечания: 80%
Статус:
Quote (Eakwarp)
new CarBDID[600];
Использовать в виде
new veh=GetPlayerVehicleID(playerid);
if(CarBDID[veh-400]) { }


Мне одному это кажется немного говнкодным?

EakwarpДата: Четверг, 22.12.2011, 21:38 | Сообщение # 11
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
s3ap, я привел самый простой способ, все что расписано выше, бессмысленный треп ни о чем, без решения поставленной задачи.


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
hitmanyДата: Пятница, 23.12.2011, 01:16 | Сообщение # 12
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
CarBDID[vehid] = carid;

не работает,как решить эту проблему?

IInkvizitorДата: Пятница, 23.12.2011, 01:45 | Сообщение # 13
Советчик
Группа: I'm V.I.P.
Сообщений: 1177
Награды: 7
Город: Санкт-Петербург
Репутация: 493
Замечания: 0%
Статус:
Не понятен вопрос.
В базе тип данных SMALLINT

hitmanyДата: Суббота, 24.12.2011, 00:09 | Сообщение # 14
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 0
Город: Moscow
Репутация: -5
Замечания: 0%
Статус:
IInkvizitor,
pPcarkey = '%d' берётся из mysql базы игроков ,структура smallint(5)
нужно присвоить:
CarBDID[vehid] = PlayerInfo[playerid][pPcarkey];

даже создал команду для проверки
Code
if(strcmp(cmd, "/carbd", true) == 0)
     {
                 new vehid;
                 tmp = strtok(cmdtext, idx);
                 if(!strlen(tmp)) {
                         SendClientMessage(playerid, COLOR_LIGHTBLUE, "Использование: /carbd [vehid]");
                         return 1;
                 }
                 vehid = strval(tmp);
                 format(string, sizeof(string), "DB Car id = %d", CarBDID[vehid]);
                 SendClientMessage(playerid, COLOR_LIGHTBLUE, string);

                 return 1;
     }

/carbd 1011 выдаёт SERVER:UNKNOW COMMAND

Добавлено (24.12.2011, 00:09)
---------------------------------------------
up

EakwarpДата: Суббота, 24.12.2011, 01:33 | Сообщение # 15
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Quote (hitmany)
/carbd 1011 выдаёт SERVER:UNKNOW COMMAND

Это значит что vehid выходит за пределы массива CarBDID[].



More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua