[GameMode] DayZ+
#1

DayZ+


Автор: Bombo
Версия: 0.0.95


Краткое описание:


Это полноценный движок, с помощью которого можно быстро создавать моды типа DayZ. Практически всё описание лута (вещей) вынесено в отдельные файлы, поэтому любой мод на данном движке легко поддаётся редактированию.

О движке:

-гибкая система добавления новых вещей (для linux версии можно добавлять 'на горячую', без перезапуска сервера)
-система составных вещей, т.е. можно задать правила компоновки вещей в инвентаре (из нескольких вещей получить одну и наоборот)
-встроенная система многоязыковой поддержки (кодировка utf8; но, при желании, можно сделать мод только на одном языке)
-система отслеживания положения, с помощью которой вещь не окажется за глухой стеной, либо под землёй
-система правильного расположения вещи на рельефе (наклон на правильный угол в соответствии с поверхностью)
-система регистрации/авторизации
-контроль количества патронов, состояния игрока и автомобилей (полное дублирование всех показателей)
-контроль наличия оружия
-контроль скорости перемещения

О моде DayZ+

На движке построен мод DayZ+, подробности в файле readme.
Требуемая версия сервера SA:MP 0.3z-R4

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








Анимированное выделение:


Система крафта:
Code:
//Описание предметов в игре
//rx ry rz	ось вращения в инвентаре
//x y z		координаты начального положения /вращения/
//zoom 		увеличение
//RX RY RZ	начальные координаты положения на земле
//height	высота центра предмета над уровнем земли
//inv_id	id предмета для отображения в инвентаре
//wr_id		id предмета для отображения на земле
//rotbl		0 - статический предмет на земле, 1 - наклоняется в зависимости от рельефа
//value		начальное значение в игре (например, количество патронов в рожке АК47)
//type_name	системное имя предмета (используется для хранения в БД)
//about		комментарий на любом языке

//+ патроны помечаем плюсиками
//@ авто-применение (т.е. вещь автоматически используется, когда подбирается игроком)

//                    rx  ry  rz   x    y    z  zoom  RX   RY   RZ  height inv_id  wr_id rotbl value     type_name      about  {cells wheels def_panels def_doors def_light def_tyres def_patrol patrol_cons max_patrol}
+[AK47_AMMO]         ( 0,  0,  1,   0, 270, 200,   2,   0,   0,  30, -0.65,  2061,  1271,    1,   30, ORDINARY_AMMO_TYPE,     ) //1221 //1271 - оригинал
+Патроны для M4      ( 0,  0,  1,   0,  90,  20, 2.3,   0,   0, 120, -0.65,  2061,  1271,    1,   30, ORDINARY_AMMO_TYPE,     ) //1221
+[RIFLE_AMMO]        ( 0,  0,  1,   0,   0, 200, 1.6,   0,   0,  70, -0.65,  2061,  1271,    1,   10, RARE_AMMO_TYPE,         ) //1220
+[PISTOL_AMMO] 	     ( 0,  0, -1, 330,   0, 142, 1.8,   0,   0, 220, -0.65,  2043,  1271,    1,    7, RARE_AMMO_TYPE,     ) //1271
[EMPTY_AK47]         ( 0,  0,  1, -10,   0,  20,   3,  90,   0, 120, -0.95,   355,   355,    1,    0, ORDINARY_RIFLE_TYPE,    ) //(id355)
[LOADED_AK47]        ( 0,  0,  1,  10,   0,  20,   3,  90,   0, 150, -0.95,   355,   355,    0,    0, ORDINARY_RIFLE_TYPE,    ) //(id355)
[EMPTY_PISTOL]       ( 0,  0,  1, -10,   0,  20, 1.7,  90,   0,  20, -0.95,   348,   348,    0,    0, ORDINARY_GUN_TYPE,    ) //(id348)
[LOADED_PISTOL]      ( 0,  0,  1,  10,   0,  20, 1.7,  90,   0, 100, -0.95,   348,   348,    0,    0, ORDINARY_GUN_TYPE,    ) //(id348)
[EMPTY_M4]           ( 0,  0,  1, -10,   0,  20,   3,  90,   0, 170, -0.95,   356,   356,    0,    0, ORDINARY_RIFLE_TYPE,    ) //(id356)
[LOADED_M4]          ( 0,  0,  1,  10,   0,  20,   3,  90,   0,  75, -0.95,   356,   356,    0,    0, ORDINARY_RIFLE_TYPE,    ) //(id356)
[EMPTY_RIFLE]        ( 0,  0,  1, -20,   0,  20,   3,  90,   0,  28, -0.95,   357,   357,    0,    0, RARE_GUN_TYPE,          ) //357
[LOADED_RIFLE]       ( 0,  0,  1,  10,   0,  20,   3,  90,   0,  50, -0.95,   357,   357,    0,    0, RARE_GUN_TYPE,          ) //357 RARE_GUN_TYPE
[LOADED_SNIPER_RIFLE]( 0,  0,  1,  10,   0,  20,   3,  90,   0,  50, -0.95,   358,   358,    0,    0, RARE_GUN_TYPE,          ) //357 RARE_GUN_TYPE
[EMPTY_SNIPER_RIFLE] ( 0,  0,  1,  10,   0,  20,   3,  90,   0,  50, -0.95,   358,   358,    0,    0, RARE_GUN_TYPE,          ) //357 RARE_GUN_TYPE

[BOTTLE_OF_LEMONADE] ( 0,  0,  1,   0,   0, 290, 1.5,   0,   0,   0,    -1,  1544,  1544,    1,  500, SOMETHING_TYPE, Что_угодно) //(id1544)
[EMPTY_BOTTLE]       ( 0,  1,  1,  50, 110, 290, 1.5, 270,   0,  30, -0.96,  1486,  1486,    1,    0, SOMETHING_TYPE, Что_угодно) //1486
[BOTTLE_OF_WATER]    ( 0,  0,  1,   0,   0, 290, 1.5,   0,   0,   0, -0.85,  1486,  1486,    1,  250, SOMETHING_TYPE, Что_угодно) //1487

//																{cells wheels def_panels def_doors def_light def_tyres def_patrol patrol_cons max_patrol}
[JEEP_VEHICLE]	     ( 0,  0,  1,   0,   0,  20,   1,   0,   0,   0, -0.50,   500,   500,    0,    0, SOME_VEHICLE, Автомобиль) {   4,     4,         0,        0,        0,       15,         2,          1,         40} //бак на 10 минут
[VAN_VEHICLE]	     ( 0,  0,  1,   0,   0,  20,   1,   0,   0,   0, -0.50,   483,   483,    0,    0, SOME_VEHICLE, Автомобиль) {  12,     4,         0,        0,        0,       15,         5,          1,        120} //бак на 30 минут
[BICYCLE_VEHICLE]    ( 0,  0,  1,   0,   0,  20,   1,   0,   0,   0, -0.50,   510,   510,    0,    0, SOME_VEHICLE, Автомобиль) {   1,     2,         0,        0,        0,        0,         0,          0,          0}

[CAR_WHEEL]          ( 0,  0,  1,   0,   0,  50,   2,   0,   0,   0, -0.54,  1025,  1025,    0,  100, CAR_PARTS,  Автозапчасти) //(id1079)
[CAR_ENGINE]         ( 0,  0,  1, -30,   0, 140, 1.0,   0,   0,  80, -0.54,   920,   920,    1, 1000, CAR_PARTS,  Автозапчасти) //(id920)
[CAR_TOOLBOX]        ( 0,  0,  1, -30,   0, 140, 1.4,   0,   0,  50, -0.84,  1210,  1210,    1,    0, CAR_PARTS,  Автозапчасти) //(1210)

[EMPTY_JERRYCAN]     ( 0,  1,  0,  72, 306,   0, 1.7,  90,   0,  72, -0.92,  1650,  1650,    1,    0, CAR_PARTS,  Автозапчасти) //1650
[FULL_JERRYCAN]      ( 0,  0,  1,   0,   0,  20, 1.7,   0,   0,  50,  -0.7,  1650,  1650,    1,   20, CAR_PARTS,  Автозапчасти) //1650

[THE_BANDAGE]        ( 0,  0,  1, -30,   0,  68, 2.2,   0,   0, 125,  -1.0,  1279,  1577,    1,  500, SOMETHING_TYPE,         ) //1279
+[PIECE_OF_PIZZA]    ( 0,  1,  0,  50, 298,  90, 1.6,   0, 270,  55, -0.97,  2702,  2702,    1,  200, SOMETHING_TYPE,         ) //2702
[FULL_PIZZA]         ( 0,  0,  1, -30,   0,  68, 2.2,   0,   0, 125,  -1.0,  1582,  1582,    1,  800, SOMETHING_TYPE,         ) //1582

@[GPS_NAVIGATOR]     ( 0, -1,  0, -90,  30, 180, 1.2,   0,   0, 105, -0.98, 18875, 18875,    1,    0, SOME_USEFULL_TYPE,Нужная_вещь) //18875
@[COMPASS_BOX]       ( 0,  0,  1, -30,   0, 148, 2.2,   0,   0, 105,  -1.0,  2710,  2710,    1,    0, SOME_USEFULL_TYPE,Нужная_вещь) //2710


//Далее следует описание составных предметов (ЧТО из ЧЕГО можно получить)
//например, компонуя 'Патроны для винтовки' и '!Разряженая винтовка' получим 'Заряженая винтовка'
//для каждой вещи необходимо один раз указать системное имя в квадратных скобках []
//после обычного имени (возможно, перед системным) можно указать количество компонуемых объектов
//символом '*' можно закомментировать вещь

//символ '!' в начале имени обозначает резидентный объект (id вещи собираемого объекта заменяется на id вещи резидентного объекта, и наоборот при разборе)
//символы "!!" в начале имени обозначают неразбираемый резидентный объект (разбор по этому правилу невозможен) - например, из бутылочки лимонада можно получить пустую бутылку, но нельзя наоборот, из пустой бутылки получить бутылочку лимонада


Разряженая винтовка [EMPTY_RIFLE] //(id357)
|-*Приклад винтовки [RIFLE_BUTT]
|-*Ствол винтовки [RIFLE_BARREL]
|-*Затвор винтовки [BOLT_ACTION_RIFLE]
|-*Спусковой механизм винтовки [RIFLE_TRIGGER_MECHANISM]

Заряженная винтовка [LOADED_RIFLE] //(id357)
|-!Разряженая винтовка
|-Патроны для винтовки [RIFLE_AMMO]

Заряженная винтовка
|-Заряженная винтовка
|-Патроны для винтовки

Разряженая снайперская винтовка [EMPTY_SNIPER_RIFLE] //(id358) //(id2036)
|-!Разряженая винтовка
|-Оптический прицел

Заряженная снайперская винтовка
|-Заряженная винтовка
|-Оптический прицел

Заряженная снайперская винтовка [LOADED_SNIPER_RIFLE] //(id358) //(id2036)
|-!Разряженая снайперская винтовка
|-Патроны для винтовки

Заряженная снайперская винтовка
|-Заряженная снайперская винтовка
|-Патроны для винтовки

Автомобиль [JEEP_VEHICLE]
|-*Сломаный автомобиль [BROKEN_CAR] //(id3594)
|-*Целый двигатель [ENGINE]
  |-*Сломаный двигатель [BROKEN_ENGINE]
  |-*Поршень 4 [ENGINE_PISTON]
  |-*Шатун 4 [ENGINE_CONNECTING_ROD]
  |-*Свеча 8 [ENGINE_SPARK]
|-*Колесо от автомобиля 4 [CAR_WHEEL]
  |-*Колёсный диск от автомобиля [WHEEL_DISK]
  |-*Покрышка от автомобиля [TIRE]
|-*Коробка передач на автомобиль [TRANSMISSION]
|-*Система рулевого управления [STEERING_SYSTEM]
|-*Тормоза для автомобиля [CAR_BRAKES]
|-*Автомобильный аккумулятор
  |-*Корпус автомобильного аккумулятора
  |-*Электролит
  |-*Пластины аккумулятора

Велосипед [BICYCLE_VEHICLE]

Разряженый пистолет [EMPTY_PISTOL] //(id348)
|-*Ствол пистолета [PISTOL_BARREL]
|-*Корпус пистолета [PISTOL_HANDLE]
|-*Спусковой механизм пистолета [PISTOL_TRIGGER_MECHANISM]
|-*Затвор пистолета [PISTOL_BOLT_ACTION]

Заряженный пистолет [LOADED_PISTOL] //(id348)
|-!Разряженый пистолет
|-Патроны для пистолета [PISTOL_AMMO]

Заряженный пистолет
|-Заряженный пистолет
|-Патроны для пистолета

Разряженая M4 [EMPTY_M4] //(id356) //(id2035)
|-*Приклад M4 [M4_BUTT]
|-*Затвор M4 [BOLT_ACTION_M4]
|-*Спусковой механизм M4 [M4_TRIGGER_MECHANISM]
|-*Ствол M4 [M4_BARREL]

Заряженная M4 [LOADED_M4] //(id356) //(id2035)
|-!Разряженая M4
|-Патроны для M4 [M4_AMMO]

Заряженная M4
|-Заряженная M4
|-Патроны для M4

Разряженый АК47 [EMPTY_AK47] //(id355)
|-*Приклад АК47 [AK47_BUTT]
|-*Затвор АК47 [BOLT_ACTION_AK47]
|-*Спусковой механизм АК47 [AK47_TRIGGER_MECHANISM]
|-*Ствол АК47 [AK47_BARREL]

Заряженный АК47 [LOADED_AK47] //(id355)
|-!Разряженый АК47
|-Патроны для АК47 [AK47_AMMO]

Заряженный АК47
|-!Разряженый АК47
|-Патроны для АК47 2

Заряженный АК47
|-!Разряженый АК47
|-Патроны для АК47 3

Заряженный АК47
|-Заряженный АК47
|-Патроны для АК47

Заряженный АК47
|-Заряженный АК47
|-Патроны для АК47 2

Заряженный АК47
|-Заряженный АК47
|-Патроны для АК47 3

Полная канистра [FULL_JERRYCAN]
|-!Пустая канистра [EMPTY_JERRYCAN]

Пустая бутылка
|-!!Бутылочка лимонада [BOTTLE_OF_LEMONADE]

Бутылка с водой [BOTTLE_OF_WATER]
|-!Пустая бутылка [EMPTY_BOTTLE]

Целая пицца [FULL_PIZZA]
|-!Целая пицца
|-Кусочек пиццы [PIECE_OF_PIZZA]

Целая пицца
|-!Целая пицца
|-Кусочек пиццы 2

Целая пицца
|-!Целая пицца
|-Кусочек пиццы 3
Код: GitHub
Описание: readme

Test server: botinform.asuscomm.com:7797

Donate:
WebMoney R211309231066 Z841169965648 E226595298971
Reply
#2

Quote:
Originally Posted by Bombo
View Post
Требуемая версия сервера SA:MP 0.3z-RC4
Почему нельзя RC3 или R2?
Reply
#3

pawn Code:
#define CreateObject(%1,%2,%3,%4,%5,%6,%7,%8) CreateDynamicObject(%1, %2, %3, %4, %5, %6, %7, -1, -1, -1, %8, 0.0)
Your got to be kidding me right?
Reply
#4

Quote:
Originally Posted by OKStyle
View Post
Почему нельзя RC3 или R2?
Использую OnUnoccupiedVehicleUpdate()

Quote:
Originally Posted by Pottus
View Post
pawn Code:
#define CreateObject(%1,%2,%3,%4,%5,%6,%7,%8) CreateDynamicObject(%1, %2, %3, %4, %5, %6, %7, -1, -1, -1, %8, 0.0)
Your got to be kidding me right?

What's wrong?

pawn Code:
native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0, Float:drawdistance = 0.0);
Кто-нить знает, что не нравится этому товарищу?
Reply
#5

Quote:
Originally Posted by Bombo
View Post
Кто-нить знает, что не нравится этому товарищу?
Наличие данного define в коде.
У нормальных программистов это называется быдлокод.
Reply
#6

Известно, что при создании нового динамического объекта рядом с игроком, этот объект не сразу отображается. В этом моде такой проблемы нету, ибо она мною решена. И помог мне именно этот макрос.
Но чем заслужила эта конструкция в релизах такого отношения? Мне такие грабли не попадались..

P.S. Этой строчки (и двух последующих) в коде уже нету
Reply
#7

Quote:
Originally Posted by Bombo
View Post
Известно, что при создании нового динамического объекта рядом с игроком, этот объект не сразу отображается. В этом моде такой проблемы нету, ибо она мною решена. И помог мне именно этот макрос.
Но чем заслужила эта конструкция в релизах такого отношения? Мне такие грабли не попадались..

P.S. Этой строчки (и двух последующих) в коде уже нету

Макросы не попадают в скомпелированый код.
Это банальное условие для поиска и замены компилятору.
Reply
#8

Quote:
Originally Posted by Bombo
View Post
Использую OnUnoccupiedVehicleUpdate()
Она появилась в SA-MP 0.3c R3 А доп. параметры появились в SA-MP 0.3z R4, в 0.3z RC4 их ещё не было.
Reply
#9

Quote:
Originally Posted by Stepashka
View Post

Макросы не попадают в скомпелированый код.
Это банальное условие для поиска и замены компилятору.
Естественно не попадают, это же директива препроцессора. Но без этого макро мне бы пришлось несколько раз менять CreateObject на CreateDynamicObject и обратно.

Quote:
Originally Posted by OKStyle
View Post
Она появилась в SA-MP 0.3c R3 А доп. параметры появились в SA-MP 0.3z R4, в 0.3z RC4 их ещё не было.
Прошу прощения, требуется именно R4, а не RC4. Исправлено.
Reply
#10

Quote:
Originally Posted by Pottus
View Post
pawn Code:
#define CreateObject(%1,%2,%3,%4,%5,%6,%7,%8) CreateDynamicObject(%1, %2, %3, %4, %5, %6, %7, -1, -1, -1, %8, 0.0)
Your got to be kidding me right?
OMG !
defining so may %1 %2 hahahha
Reply
#11

@Bombo The reason is CreateObject() is it's own function which is useful for certain things that dynamic objects are not so good for!
Reply
#12

Quote:
Originally Posted by Toxik
View Post
OMG !
defining so may %1 %2 hahahha
http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf:
Quote:
#define pattern replacement

Defines a text substitution macro. The pattern is matched to all
lines read from the source files; the sections that match are replaced
by the replacement texts. The pattern and the replacement texts
may contain parameters, denoted by “%0” to “%9”. See page 92 for
details and examples on text substitution.

Quote:
Originally Posted by Pottus
View Post
@Bombo The reason is CreateObject() is it's own function which is useful for certain things that dynamic objects are not so good for!
It depends on the code.
Reply
#13

Where is pwn ?
Reply
#14

Quote:
Originally Posted by TomIrish
View Post
Where is pwn ?
Опа, интересный вопрос. Автор или добавляешь pwn файл или весь топик будет удален. У тебя сутки.
Reply
#15

Quote:
Originally Posted by TomIrish
View Post
Where is pwn ?
Quote:
Originally Posted by Stepashka
View Post
Опа, интересный вопрос. Автор или добавляешь pwn файл или весь топик будет удален. У тебя сутки.
Все pwn в папке pawno проекта. Основной код в файле menu.pwn
Reply
#16

Quote:
Originally Posted by Bombo
View Post
Все pwn в папке pawno проекта. Основной код в файле menu.pwn
Ок
Reply
#17

Sorry, nevizu cto tut napisano. Mozes translitom napisat? Ja zagruzil SQL na localhost s Wamp i sdelal tokije parametry v defines.inc
Quote:

#define HOST "localhost" //host name/addr
#define USER "root" //user name
#define PASSWD "" //user password
#define DBNAME "dayz" //database name
ili tak
#define HOST "127.0.0.1" //host name/addr
#define USER "root" //user name
#define PASSWD "" //user password
#define DBNAME "dayz" //database name

Sohranil i potom skompiliroval menu.pwn i amx zabrosil v filterscripts. Kogda zapuskaju polucaetsa eto.
Quote:

[10:29:15] [WARNING] CMySQLHandle::SaveActiveResult - active cache was already saved
[10:29:15] [WARNING] CMySQLHandle::SaveActiveResult - active cache was already saved
[10:29:15] [ERROR] CMySQLQuery::Execute - (error #1062) Duplicate entry '719' for key 'PRIMARY'
[10:29:15] [ERROR] CMySQLQuery::Execute - (error #1062) Duplicate entry '719' for key 'PRIMARY'
[10:29:15] [ERROR] CMySQLQuery::Execute - (error #1062) Duplicate entry '718' for key 'PRIMARY'
[10:29:15] [ERROR] CMySQLQuery::Execute - (error #1062) Duplicate entry '718' for key 'PRIMARY'
[10:29:15] [ERROR] CMySQLQuery::Execute - (error #1062) Duplicate entry '720' for key 'PRIMARY'
[10:29:15] [ERROR] CMySQLQuery::Execute - (error #1062) Duplicate entry '720' for key 'PRIMARY'

gde problema ?
Reply
#18

Quote:
Originally Posted by TomIrish
View Post
Sorry, nevizu cto tut napisano. Mozes translitom napisat? Ja zagruzil SQL na localhost s Wamp i sdelal tokije parametry v defines.inc

Sohranil i potom skompiliroval menu.pwn i amx zabrosil v filterscripts. Kogda zapuskaju polucaetsa eto.

gde problema ?
No problem.
Odna iz tabliz obnovlyaetsja pri zapuske servera, i nekotorije polya s unikal'nim kluchom dublirujutsyja. Nichego strashnogo, tak i dolzhno bit'.

UPD: No such error messages (load_objects.inc is updated).
Reply
#19

Quote:
Originally Posted by TomIrish
View Post
Sorry, nevizu cto tut napisano.
Reply
#20

Тестовый сервер: botinform.com:7777
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)