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

 



 
          





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





Последние Файлы 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 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: Interpol  
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Плагины и программы » [PLUGIN] Structure Access 0.2 (доступ к структурам сервера и пакетам синхронизации)
[PLUGIN] Structure Access 0.2
Alex009Дата: Воскресенье, 21.02.2010, 08:53 | Сообщение # 1
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Plugin for SA:MP 0.3a R4 server
Structure Access 0.2
by 009

Плагин позволяет брать данные типов float и integer из структур сервера CPlayer , CVehicle , CObject
Изменить данные нельзя,и нет смысла делать это т.к. клиенту эти данные не передаются(сервер просто посылает эти данные остальным игрокам - синхронизация)
Для получения данных требуется знать offset нужного вам значения структуры

Функции:

Структура CPlayer:
[pwn]GetPlayerStructureInfoByte(playerid,structure_offset)
Получает значение типа byte из структуры CPlayer игрока с id = playerid с offset = structure_offset

GetPlayerStructureInfoInt(playerid,structure_offset)
Получает значение типа integer из структуры CPlayer игрока с id = playerid с offset = structure_offset

GetPlayerStructureInfoFloat(playerid,structure_offset)
Получает значение типа float из структуры CPlayer игрока с id = playerid с offset = structure_offset
[/pwn]
Структура CVehicle:
[pwn]GetVehicleStructureInfoByte(vehicleid,structure_offset)
Получает значение типа byte из структуры CVehicle транспорта с id = vehicleid с offset = structure_offset

GetVehicleStructureInfoInt(vehicleid,structure_offset)
Получает значение типа integer из структуры CVehicle транспорта с id = vehicleid с offset = structure_offset

GetVehicleStructureInfoFloat(vehicleid,structure_offset)
Получает значение типа float из структуры CVehicle транспорта с id = vehicleid с offset = structure_offset[/pwn]

Структура CObject:
[pwn]GetObjectStructureInfoByte(vehicleid,structure_offset)
Получает значение типа byte из структуры CObject обьекта с id = objectid с offset = structure_offset

GetObjectStructureInfoInt(vehicleid,structure_offset)
Получает значение типа integer из структуры CObject обьекта с id = objectid с offset = structure_offset

GetObjectStructureInfoFloat(vehicleid,structure_offset)
Получает значение типа float из структуры CObject обьекта с id = objectid с offset = structure_offset[/pwn]

Функции чтения структуры передаваемой в пакете:

Пакет FootSync:

[pwn]GetFootSyncDataByte(playerid,structure_offset)
Получает значение типа byte из структуры пакета игрока с id = playerid с offset = structure_offset

GetFootSyncDataInt(playerid,structure_offset)
Получает значение типа integer из структуры пакета игрока с id = playerid с offset = structure_offset

GetFootSyncDataFloat(playerid,structure_offset)
Получает значение типа float из структуры пакета игрока с id = playerid с offset = structure_offset[/pwn]

Пакет UsedVehicleSync(DriverSync):

[pwn]GetUsedVehicleDataByte(vehicleid,structure_offset)
Получает значение типа byte из структуры пакета транспорта с id = vehicleid с offset = structure_offset

GetUsedVehicleDataInt(vehicleid,structure_offset)
Получает значение типа integer из структуры пакета транспорта с id = vehicleid с offset = structure_offset

GetUsedVehicleDataFloat(vehicleid,structure_offset)
Получает значение типа float из структуры пакета транспорта с id = vehicleid с offset = structure_offset[/pwn]

Пакет PasssangerSync:

[pwn]GetPassangerDataByte(playerid,structure_offset)
Получает значение типа byte из структуры пакета игрока с id = playerid с offset = structure_offset

GetPassangerDataInt(playerid,structure_offset)
Получает значение типа integer из структуры пакета игрока с id = playerid с offset = structure_offset

GetPassangerDataFloat(playerid,structure_offset)
Получает значение типа float из структуры пакета игрока с id = playerid с offset = structure_offset[/pwn]

Пакет UnusedVehicleSync:

[pwn]GetUnusedVehicleDataByte(vehicleid,structure_offset)
Получает значение типа byte из структуры пакета транспорта с id = vehicleid с offset = structure_offset

GetUnusedVehicleDataInt(vehicleid,structure_offset)
Получает значение типа integer из структуры пакета транспорта с id = vehicleid с offset = structure_offset

GetUnusedVehicleDataFloat(vehicleid,structure_offset)
Получает значение типа float из структуры пакета транспорта с id = vehicleid с offset = structure_offset[/pwn]

Калбеки:

[pwn]OnFootSync(playerid);
Вызывается при получении сервером пакета FootSync (playerid - отправитель)

OnUsedVehicleSync(playerid,vehicleid);
Вызывается при получении сервером пакета UsedVehicleSync(DriverSync) (playerid - отправитель , vehicleid - транспорт)

OnPassangerSync(playerid,vehicleid);
Вызывается при получении сервером пакета PasssangerSync (playerid - отправитель , vehicleid - транспорт)

OnUnusedVehicleSync(playerid,vehicleid);
Вызывается при получении сервером пакета UnusedVehicleSync (playerid - отправитель , vehicleid - транспорт)[/pwn]

Примеры использования даны в samples.pwn

download

P.S.
@all: В архиве так же дан файл с офсетами структуры CVehicle ( не много расписано, чтобы узнать за что отвечают те что с "?" ставте на проверку их в моде и смотрите значения)

@Admins & moders: Тему прошлой версии не удаляйте,стабильность этой версии не гарантирована поэтому пусть прошлая , как более стабильная, остаётся у людей на виду


Controllable NPC developer
soProject developer


Сообщение отредактировал Alex009 - Воскресенье, 21.02.2010, 08:55
stepmexДата: Воскресенье, 21.02.2010, 09:49 | Сообщение # 2
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (Alex009)
клиенту эти данные не передаются(сервер просто посылает эти данные остальным игрокам - синхронизация)
но ведь встренные средства Set передаются всем игрокам, почему нельзя передать эти обратно?
И как я понял если сделать сет, то у всем кроме того у кого меняем, передадутся измененные значения?



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 09:57 | Сообщение # 3
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Quote (stepmex)
И как я понял если сделать сет, то у всем кроме того у кого меняем, передадутся измененные значения?

да,поэтому не нужен сет чтобы не делали десинхронизацию crazy
Quote (stepmex)
но ведь встренные средства Set передаются всем игрокам, почему нельзя передать эти обратно?

Встроенные средства ещё и отправляют пакет вызова фукнции клиента проделывающей у клиента то что вы хотите сделать( к примеру SetPlayerPos отправит пакет который у клиента выставит координаты,этот пакет просто вызовет функцию в клиенте выставления координат.)



Controllable NPC developer
soProject developer
stepmexДата: Воскресенье, 21.02.2010, 10:09 | Сообщение # 4
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Например в YSF есть функция SetPlayerGravity, значит вполне можно передать данные клиенту зная какой пакет передать?

Добавлено (21.02.2010, 10:09)
---------------------------------------------
И например машины создаются на сервере и при попадании в зону игрока просто спавняца, значит вполне можно менять их значения как угодно, а сервер сам того неведая создаст нужную нам машину?


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 10:15 | Сообщение # 5
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Quote (stepmex)
Например в YSF есть функция SetPlayerGravity, значит вполне можно передать данные клиенту зная какой пакет передать?

Можно сделать SetPlayerGravity потому что есть SetGravity (или как там) которая отсылает ВСЕМ игрокам один пакет,а SetPlayerGravity этот же пакет отсылает одному игроку(эт я пытаюсь обьяснить что для SetPlayerGravity уже есть фукнция в клиенте)
но если пытаться сделать к примеру SetVehicleTireStatus то не получится т.к. нет в клиенте функции для выставления статуса шины

Добавлено (21.02.2010, 10:15)
---------------------------------------------

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

смысловую нагрузку поста я не догнал :D



Controllable NPC developer
soProject developer
stepmexДата: Воскресенье, 21.02.2010, 10:22 | Сообщение # 6
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Первое понял, т.е. чтобы сделать дополниельные функции нужно переписать клиентскую часть. Я почему-то думал что все эти функции встроенны в сам движок mda
Quote (Alex009)
смысловую нагрузку поста я не догнал
в 0.3 версии машины хранятся как огромный массив данных на сервере, данные из которого передаются в стримерре игроку когда он рядом с машиной. Раньше все данные о машинах просто сбрасывались клиенту при коннетке.
Т.е. сейчас, если скажем ей включить фары, то когда она создастся у клиента фары будут гореть, или мы опять упираемся в неспособность клиента изменить эти даннаы?



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 10:27 | Сообщение # 7
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Quote (stepmex)
в 0.3 версии машины хранятся как огромный массив данных на сервере, данные из которого передаются в стримерре игроку когда он рядом с машиной. Раньше все данные о машинах просто сбрасывались клиенту при коннетке.
Т.е. сейчас, если скажем ей включить фары, то когда она создастся у клиента фары будут гореть, или мы опять упираемся в неспособность клиента изменить эти даннаы?

для начала включить фары не получится т.к. они не синхрятся(хотя может в 0.3 и синхрятся...)
далее я пока не знаю есть ли в структуре CVehicle(серверная которая) офсет отвечающий за фары(если они вдруг есть)
и последнее - если этот офсет есть и изменить его значение то при создании тачи(если проверка координат происходит на стороне сервера а не клиента,т.е. если стриммер не в клиенте т.к. мне кажется что он там(нашёл одну команду в клиенте которая это практически доказывает)) то при передаче данных клиенту передадутся и включеные фары,если клиент учитывает эти данные(о фарах) то у него они будут включены

надеюсь понятно написал(много букав для понимания некоторые не осиливают :D )


Controllable NPC developer
soProject developer
stepmexДата: Воскресенье, 21.02.2010, 10:41 | Сообщение # 8
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Alex009, для мну понятно yes
Другой вопрос в движке есть опкоды для создания, уничтожения и изменения данных игры, можно ли напрямую достучатся до них без необходимости изменения клиента.
Можно ли передать от сервера пакет напрямую в движок игры?



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 10:56 | Сообщение # 9
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Quote (stepmex)
Alex009, для мну понятно yes
Другой вопрос в движке есть опкоды для создания, уничтожения и изменения данных игры, можно ли напрямую достучатся до них без необходимости изменения клиента.
Можно ли передать от сервера пакет напрямую в движок игры?

In short, no.



Controllable NPC developer
soProject developer
stepmexДата: Воскресенье, 21.02.2010, 11:05 | Сообщение # 10
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Новая версия плагина убивает сервер через минуту.


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 11:08 | Сообщение # 11
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
ммм,у меня она и через час не убивает :D
сервер из папки архива заюзай может у тебя не та версия
P.S. а если на сервере и игроков нет то он вообще в спячке



Controllable NPC developer
soProject developer


Сообщение отредактировал Alex009 - Воскресенье, 21.02.2010, 11:10
stepmexДата: Воскресенье, 21.02.2010, 11:49 | Сообщение # 12
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Кстати не работает mda
Code
    if(strcmp("/car", cmdtext, true, 4) == 0)
  {
      new vehicleid = GetPlayerVehicleID(playerid);
      printf("carinfo(%d)",vehicleid);
      printf("0x00)int = %d _ float = %.3f",GetVehicleStructureInfoInt(vehicleid,0x00),GetVehicleStructureInfoFloat(vehicleid,0x00));
      printf("0x01)int = %d _ float = %.3f",GetVehicleStructureInfoInt(vehicleid,0x01),GetVehicleStructureInfoFloat(vehicleid,0x01));
      printf("0x02)int = %d _ float = %.3f",GetVehicleStructureInfoInt(vehicleid,0x02),GetVehicleStructureInfoFloat(vehicleid,0x02));
      ...
      printf("0xFD)int = %d _ float = %.3f",GetVehicleStructureInfoInt(vehicleid,0xFD),GetVehicleStructureInfoFloat(vehicleid,0xFD));
      printf("0xFE)int = %d _ float = %.3f",GetVehicleStructureInfoInt(vehicleid,0xFE),GetVehicleStructureInfoFloat(vehicleid,0xFE));
      printf("0xFF)int = %d _ float = %.3f",GetVehicleStructureInfoInt(vehicleid,0xFF),GetVehicleStructureInfoFloat(vehicleid,0xFF));
      return 1;
  }
по всем значениям возвращает 0 :(

Добавлено (21.02.2010, 11:40)
---------------------------------------------

Quote (Alex009)
сервер из папки архива заюзай может у тебя не та версия
щаз попробую

Добавлено (21.02.2010, 11:49)
---------------------------------------------
И что это за версия такая отличающаяся от официальной в архиве но с которой работает crazy


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 12:07 | Сообщение # 13
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Quote (stepmex)
И что это за версия такая отличающаяся от официальной в архиве но с которой работает crazy

простой сервер скачаный с самп кома после фикса "вируса" в р4 crazy

Quote (stepmex)
по всем значениям возвращает 0 :(

это не похоже на 0:
Quote
carinfo(1)
0x00)int = -993881670 _ float = -1556.553
0x01)int = 113558161 _ float = 0.000
0x02)int = -435764030 _ float = -0.000
0xFD)int = 808463920 _ float = 0.000
0xFE)int = 808464430 _ float = 0.000
0xFF)int = 808464432 _ float = 0.000

Кстати не легче юзать /gsd из samples ?


Controllable NPC developer
soProject developer


Сообщение отредактировал Alex009 - Воскресенье, 21.02.2010, 12:13
stepmexДата: Воскресенье, 21.02.2010, 12:19 | Сообщение # 14
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Alex009, после смены exe работает. кстати в c_vehicle.txt неверны некоторые расшифровки.


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Alex009Дата: Воскресенье, 21.02.2010, 12:22 | Сообщение # 15
Уважаемый человек
Группа: Продвинутые
Сообщений: 917
Награды: 10
Репутация: 661
Замечания: 0%
Статус:
Распишеш структуры и выложиш в паблик :D


Controllable NPC developer
soProject developer
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Плагины и программы » [PLUGIN] Structure Access 0.2 (доступ к структурам сервера и пакетам синхронизации)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:





 


 


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