├── front ├── ping.php ├── crossdomain.xml ├── logout.php ├── cabinet.js ├── .htaccess ├── game.css ├── cabinetHandler.php ├── style.css ├── game.php ├── cabinet.php ├── index.php ├── register.php └── ServerAction.php ├── api ├── inv.php ├── setAvatar.php ├── ban.php └── kek.php ├── readme.md ├── dump.sql └── daisy ├── bodyparts.asc ├── locations.asc └── main.asc /front/ping.php: -------------------------------------------------------------------------------- 1 | '; -------------------------------------------------------------------------------- /front/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /front/logout.php: -------------------------------------------------------------------------------- 1 | query("UPDATE USERS SET INVENTORY = '" . $_POST['inventory'] . "' WHERE TICKET = '" . $_POST['ticket'] ."';"); 6 | -------------------------------------------------------------------------------- /api/setAvatar.php: -------------------------------------------------------------------------------- 1 | query("UPDATE USERS SET AVATAR = '" . $_POST['avatar'] . "' WHERE TICKET = '" . $_POST['ticket'] ."';"); 7 | -------------------------------------------------------------------------------- /front/.htaccess: -------------------------------------------------------------------------------- 1 | RewriteEngine On 2 | RewriteRule ^fs/(.*)!(.*).swf$ /fs/$1.swf 3 | RewriteRule ^fs/(.*)!(.*).png$ /fs/$1.png 4 | RewriteRule ^fs/(.*)!.swf$ /fs/$1.swf 5 | RewriteRule ^async/ServerAction ServerAction.php 6 | RewriteRule ^async/Ping ping.php 7 | RewriteRule ^logout logout.php -------------------------------------------------------------------------------- /front/game.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Rotonda"; 3 | src: url(/RotonBol.ttf); 4 | } 5 | * { 6 | font-family: "Rotonda"; 7 | } 8 | .meow-btn { 9 | background: #8acbe5; 10 | padding: 14px; 11 | font-size: 17pt; 12 | border: none; 13 | color: black; 14 | border: 1px solid white; 15 | } 16 | a.meow-btn { 17 | text-decoration: none; 18 | } 19 | .logo { 20 | width: 15%; 21 | } -------------------------------------------------------------------------------- /api/ban.php: -------------------------------------------------------------------------------- 1 | query("SELECT * FROM USERS WHERE TICKET = '" . $_POST["ticket"] . "';"); 9 | 10 | if ($user->num_rows <= 0) { 11 | exit; 12 | } 13 | 14 | $a = $user->fetch_assoc(); 15 | if ($a['ROLEFLAGS'] == "393230") { 16 | $q = $db->query("UPDATE USERS SET ISBANNED = 1 WHERE ID = " . $_POST["id"] . ";"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /api/kek.php: -------------------------------------------------------------------------------- 1 | set_charset("utf8"); 5 | 6 | $q = $db->query("SELECT * FROM USERS WHERE TICKET = '" . $_GET['ticket'] ."';"); 7 | 8 | $a = $q->fetch_assoc(); 9 | 10 | echo "username=" . $a['USERNAME'] . "&level=" . $a['LEVEL'] . "®date=" . $a['REGDATE'] . "&roleflags=" . $a['ROLEFLAGS'] . "&money=".$a["MONEY"]."&gold=".$a["GOLD"]."&magic=".$a["MAGIC"]."&avatar=" . $a['AVATAR'] . "&inventory=" . $a['INVENTORY']; 11 | -------------------------------------------------------------------------------- /front/cabinetHandler.php: -------------------------------------------------------------------------------- 1 | set_charset("utf8"); 7 | 8 | if (!isset($_SESSION["userId"]) || !isset($_POST["level"])) { 9 | exit; 10 | } 11 | 12 | $q = $db->query("SELECT * FROM USERS WHERE ID = " . $_SESSION["userId"] . ";"); 13 | $a = $q->fetch_assoc(); 14 | $prevLevel = $a['LEVEL']; 15 | 16 | $level = $_POST["level"]; 17 | $regdate = $_POST["regyear"] . "-" . $_POST["regmonth"] . "-" . $_POST["regday"] . "T" . explode("T", $a['REGDATE'])[1]; 18 | 19 | $level = strval($level); 20 | 21 | 22 | $db->query("UPDATE USERS SET LEVEL = '" . $level . "' WHERE ID = " . $_SESSION["userId"] . ";"); 23 | $db->query("UPDATE USERS SET REGDATE = '" . $regdate . "' WHERE ID = " . $_SESSION["userId"] . ";"); 24 | 25 | $res = "ОК, данные обновлены!"; 26 | 27 | echo $res; -------------------------------------------------------------------------------- /front/style.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Rotonda"; 3 | src: url(/RotonBol.ttf); 4 | } 5 | * { 6 | font-family: "Rotonda"; 7 | } 8 | small { 9 | font-size: 14pt; 10 | } 11 | .meow-btn { 12 | background: #8acbe5; 13 | padding: 14px; 14 | font-size: 17pt; 15 | border: none; 16 | color: black; 17 | border: 1px solid white; 18 | } 19 | a.meow-btn { 20 | text-decoration: none; 21 | } 22 | .error { 23 | color: red; 24 | } 25 | .meow-btn:hover { 26 | cursor: pointer; 27 | background: #b4deee; 28 | } 29 | .logo { 30 | width: 300px; 31 | } 32 | input { 33 | font-size: 21pt; 34 | border: none; 35 | border-bottom: 2px solid #8acbe5; 36 | height: 50px; 37 | -webkit-transition: ease-in-out, width .35s ease-in-out; 38 | -o-transition: ease-in-out, width .35s ease-in-out; 39 | transition: ease-in-out, width .35s ease-in-out; 40 | } 41 | input:focus { 42 | border-color: #b4deee; 43 | } 44 | .loginbox { 45 | margin: auto; 46 | text-align: center; 47 | padding: 6px; 48 | width: 50%; 49 | } 50 | th,td { 51 | padding: 15px; 52 | text-align: left; 53 | } 54 | table { 55 | border-collapse: collapse; 56 | } 57 | table,th,td { 58 | border: 1px solid black; 59 | } -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # DaisyDale 2 | 3 | Это старые неподдерживаемые исходники daisydale.cc 4 | 5 | # Требования 6 | Для создания сервера с Дейзи Дейлом вам нужны 7 | 8 | 1.Adobe Flash Media Server (желательно версию 5, apache не ставим) 9 | 10 | 2.Xampp или другой сервер 11 | 12 | 3.Swf базу файлов Шарарама (найти не трудно) 13 | 14 | 4.MariaDB или MySQL (для хранения смешариков) 15 | 16 | # Установка 17 | 18 | 1. Первым делом необходимо перенести папку daisy из репозитория в папку applications в корне Adobe Media Server. 19 | 20 | 2. Открываем папку daisy и редактируем main.asc, меняем переменную msHost, ставим домен для апишки (для локалки достаточно localhost) 21 | 22 | 3. Заливаем флешки на вебсервер в папку fs 23 | 4. Если у вас установлен xampp содержимое всего репозитория (кроме папки daisy) нужно перенести в папку htdocs 24 | 5. В PhpMyAdmin создайте базу данных и импортируйте туда dump.sql 25 | 6. Запустите Administration server и найдите в поиске винды "Administration Console" и кликните по результату 26 | 7. Нажмите на кнопку new instance слева внизу, выберите пункт daisy и нажмите Enter 27 | 8. Теперь вы можете зайти на localhost и наслаждаться игрой дейзи дейл 28 | 29 | # Лицензия 30 | 31 | Делайте что хотите, но на ваш страх и риск. 32 | -------------------------------------------------------------------------------- /front/game.php: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | DaisyDale 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 | 26 |
27 |
28 | 29 |

Список предметов

30 |

Выйти

31 | 35 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /front/cabinet.php: -------------------------------------------------------------------------------- 1 | set_charset("utf8"); 11 | 12 | 13 | $q = $db->query("SELECT * FROM USERS WHERE ID = " . $_SESSION["userId"] . ";"); 14 | $a = $q->fetch_assoc(); 15 | 16 | $level = $a['LEVEL']; 17 | 18 | $dat = explode("T", $a['REGDATE'])[0]; 19 | $date = explode("-", $dat); 20 | $regday = $date[2]; 21 | $regmonth = $date[1]; 22 | $regyear = $date[0]; 23 | 24 | ?> 25 | 26 | 27 | 28 | 29 | 30 | Типа кабинет - DaisyDale 31 | 32 | 33 | 34 | 35 |

Типа кабинет

36 |
37 | 38 |
39 |

Лвл:

40 |

Дата: ..

41 | 42 |
43 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /dump.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.7.7 3 | -- https://www.phpmyadmin.net/ 4 | 5 | 6 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 7 | SET AUTOCOMMIT = 0; 8 | START TRANSACTION; 9 | SET time_zone = "+00:00"; 10 | 11 | 12 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 13 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 14 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 15 | /*!40101 SET NAMES utf8mb4 */; 16 | 17 | 18 | -- -------------------------------------------------------- 19 | 20 | -- 21 | -- Структура таблицы `USERS` 22 | -- 23 | 24 | CREATE TABLE `USERS` ( 25 | `ID` int(11) NOT NULL, 26 | `USERNAME` varchar(255) COLLATE utf8mb4_bin NOT NULL, 27 | `PASSWORD` varchar(255) COLLATE utf8mb4_bin NOT NULL, 28 | `AVATAR` varchar(10000) COLLATE utf8mb4_bin NOT NULL, 29 | `INVENTORY` longtext COLLATE utf8mb4_bin NOT NULL, 30 | `REGDATE` varchar(255) COLLATE utf8mb4_bin NOT NULL, 31 | `LEVEL` varchar(255) COLLATE utf8mb4_bin NOT NULL, 32 | `TICKET` varchar(255) COLLATE utf8mb4_bin NOT NULL, 33 | `ROLEFLAGS` int(11) NOT NULL, 34 | `ISBANNED` int(11) NOT NULL DEFAULT 0, 35 | `MONEY` int(11) NOT NULL DEFAULT 100, 36 | `GOLD` int(11) NOT NULL DEFAULT 0, 37 | `MAGIC` int(11) NOT NULL DEFAULT 0 38 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; 39 | 40 | -- 41 | -- Индексы сохранённых таблиц 42 | -- 43 | 44 | -- 45 | -- Индексы таблицы `USERS` 46 | -- 47 | ALTER TABLE `USERS` 48 | ADD PRIMARY KEY (`ID`), 49 | ADD UNIQUE KEY `ID` (`ID`), 50 | ADD KEY `ID_2` (`ID`); 51 | 52 | -- 53 | -- AUTO_INCREMENT для сохранённых таблиц 54 | -- 55 | 56 | -- 57 | -- AUTO_INCREMENT для таблицы `USERS` 58 | -- 59 | ALTER TABLE `USERS` 60 | MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT; 61 | COMMIT; 62 | 63 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 64 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 65 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 66 | -------------------------------------------------------------------------------- /front/index.php: -------------------------------------------------------------------------------- 1 | set_charset("utf8"); 24 | 25 | if (isset($_POST["username"]) && isset($_POST["password"])) { 26 | $a = $db->query("SELECT ID, PASSWORD, ROLEFLAGS FROM USERS WHERE USERNAME = '" . $_POST['username'] . "';"); 27 | if ($a->num_rows == 0) { 28 | $error = "Нет такого смешарика"; 29 | } else { 30 | $fetched = $a->fetch_assoc(); 31 | 32 | if (password_verify(md5($_POST["password"]), $fetched['PASSWORD'])) { 33 | $token = generateTicket(); 34 | $db->query("UPDATE USERS SET TICKET = '" . $token . "' WHERE USERNAME = '" . $_POST["username"] . "';"); 35 | $_SESSION["userId"] = $fetched["ID"]; 36 | $_SESSION["ticket"] = $token; 37 | $_SESSION["roleflags"] = $fetched["ROLEFLAGS"]; 38 | header("Location: /"); 39 | } else { 40 | $error = "Неправильный пароль."; 41 | } 42 | } 43 | } 44 | ?> 45 | 46 | 47 | 48 | 49 | 50 | Вход - DaisyDale 51 | 52 | 53 | 54 | 55 |
56 | 57 |
58 |

59 |

Вход

60 |
61 |
62 |
63 | Создать аккаунт 64 | 65 |
66 | 67 | 68 | l -------------------------------------------------------------------------------- /front/register.php: -------------------------------------------------------------------------------- 1 | 2 | set_charset("utf8"); 19 | 20 | if (isset($_POST["username"]) && isset($_POST["password"])) { 21 | if (preg_match("/[^a-z,A-Z,0-9,а-я,А-Я,\-,\_]/u", $_POST["username"])) { 22 | $error = "Ваш логин содержит недопустимые символы."; 23 | } else { 24 | if (strlen($_POST["username"]) < 3 ) { 25 | $error = "Короткий логин"; 26 | } else if (strlen($_POST["username"]) > 40) { 27 | $error = "Длинный логин"; 28 | } else { 29 | if (strlen($_POST["password"]) < 6) { 30 | $error = "Короткий пароль"; 31 | } else { 32 | $c = $db->query("SELECT * FROM USERS WHERE USERNAME = '" . $_POST["username"] . "';"); 33 | 34 | if ($c->num_rows == 0) { 35 | $ava = "IsBodyPart>true|BodyPartTypeId>5|MediaResourceID>67|LayerID>25|BodyPartId>30|Id>30|Color>NaN;IsBodyPart>true|BodyPartTypeId>6|MediaResourceID>68|LayerID>39|BodyPartId>31|Id>31|Color>16762375;IsBodyPart>true|BodyPartTypeId>7|MediaResourceID>74|LayerID>29|BodyPartId>40|Id>40|Color>NaN;IsBodyPart>true|BodyPartTypeId>8|MediaResourceID>98|LayerID>49|BodyPartId>73|Id>73|Color>NaN;IsBodyPart>true|BodyPartTypeId>2|MediaResourceID>55|LayerID>9|BodyPartId>1|Id>1|Color>NaN;IsBodyPart>true|BodyPartTypeId>3|MediaResourceID>56|LayerID>19|BodyPartId>2|Id>2|Color>16762375;IsBodyPart>false|GoodID>8712|MediaResourceID>27527|GoodTypeID>4|LayerID>45|Id>8712;IsBodyPart>false|GoodID>9235|MediaResourceID>29235|GoodTypeID>94|LayerID>57|Id>9235"; 36 | $inv = ""; 37 | $hash = password_hash(md5($_POST["password"]), PASSWORD_DEFAULT); 38 | $date = date("Y-m-d") . "T" . date("H-m-s") . ".0"; 39 | $ticket = generateTicket(); 40 | $qwery = $db->query("INSERT INTO `USERS`(`USERNAME`, `PASSWORD`, `ROLEFLAGS`, `LEVEL`, `AVATAR`, `TICKET`, `INVENTORY`, `REGDATE`) VALUES ('" . $_POST["username"] . "', '" . $hash . "', 131086 , 999, '" . $ava . "', '" . $ticket . "', '" . $inv . "', '" . $date . "');"); 41 | if (!$qwery) { 42 | echo $db->error; 43 | exit; 44 | } 45 | $_SESSION["ticket"] = $ticket; 46 | $_SESSION["roleflags"] = 131086; 47 | $_SESSION["userId"] = $id; 48 | header("Location: /"); 49 | } else { 50 | $error = "Смешарик с таким ником уже существует."; 51 | } 52 | } 53 | } 54 | } 55 | } 56 | ?> 57 | 58 | 59 | 60 | 61 | 62 | 63 | Создать аккаунт - DaisyDale 64 | 65 | 66 | 67 | 68 |
69 | 70 |
71 |

72 | 73 |

Регистрация

74 | 75 |
76 |
77 |
78 |
Назад
79 |
80 |
81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /front/ServerAction.php: -------------------------------------------------------------------------------- 1 | '; 65 | $serversList = ''; 66 | 67 | 68 | $db = new mysqli('localhost', 'root', '', 'daisy'); 69 | $db->set_charset("utf8"); 70 | 71 | $q = $db->query("SELECT * FROM USERS WHERE ID = " . $_SESSION["userId"] . ";"); 72 | 73 | $a = $q->fetch_assoc(); 74 | 75 | $ud = ""; 76 | if ($a['ISBANNED'] == 1) { 77 | $ud = 'BanDateExpired="31-02-2020 07:08:14" BanTextResourceID="162"'; 78 | } 79 | 80 | 81 | $userData = ''; 82 | 83 | 84 | $system = ''; 85 | 86 | echo ' 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | '; 142 | 143 | -------------------------------------------------------------------------------- /daisy/bodyparts.asc: -------------------------------------------------------------------------------- 1 | var bodyParts = {}; 2 | bodyParts["2"] = { 3 | Id: 56, 4 | BodyPartId: 2, 5 | MediaResourceID: 56, 6 | IsColorable: 1, 7 | LayerID: 20, 8 | BodyPartTypeId: 3 9 | }; 10 | bodyParts["1"] = { 11 | Id: 55, 12 | BodyPartId: 1, 13 | MediaResourceID: 55, 14 | IsColorable: 1, 15 | LayerID: 10, 16 | BodyPartTypeId: 2 17 | }; 18 | bodyParts["22"] = { 19 | Id: 62, 20 | BodyPartId: 22, 21 | MediaResourceID: 62, 22 | IsColorable: 0, 23 | LayerID: 10, 24 | BodyPartTypeId: 2 25 | }; 26 | bodyParts["66"] = { 27 | Id: 28, 28 | BodyPartId: 66, 29 | MediaResourceID: 28, 30 | IsColorable: 1, 31 | LayerID: 10, 32 | BodyPartTypeId: 2 33 | }; 34 | bodyParts["36"] = { 35 | Id: 71, 36 | BodyPartId: 36, 37 | MediaResourceID: 71, 38 | IsColorable: 0, 39 | LayerID: 10, 40 | BodyPartTypeId: 2 41 | }; 42 | bodyParts["41"] = { 43 | Id: 75, 44 | BodyPartId: 41, 45 | MediaResourceID: 75, 46 | IsColorable: 0, 47 | LayerID: 10, 48 | BodyPartTypeId: 2 49 | }; 50 | bodyParts["48"] = { 51 | Id: 80, 52 | BodyPartId: 48, 53 | MediaResourceID: 80, 54 | IsColorable: 1, 55 | LayerID: 10, 56 | BodyPartTypeId: 2 57 | }; 58 | bodyParts["57"] = { 59 | Id: 86, 60 | BodyPartId: 57, 61 | MediaResourceID: 86, 62 | IsColorable: 1, 63 | LayerID: 10, 64 | BodyPartTypeId: 2 65 | }; 66 | bodyParts["65"] = { 67 | Id: 92, 68 | BodyPartId: 65, 69 | MediaResourceID: 92, 70 | IsColorable: 1, 71 | LayerID: 10, 72 | BodyPartTypeId: 2 73 | }; 74 | bodyParts["45"] = { 75 | Id: 78, 76 | BodyPartId: 45, 77 | MediaResourceID: 78, 78 | IsColorable: 1, 79 | LayerID: 50, 80 | BodyPartTypeId: 8 81 | }; 82 | bodyParts["54"] = { 83 | Id: 84, 84 | BodyPartId: 54, 85 | MediaResourceID: 84, 86 | IsColorable: 1, 87 | LayerID: 50, 88 | BodyPartTypeId: 8 89 | }; 90 | bodyParts["62"] = { 91 | Id: 90, 92 | BodyPartId: 62, 93 | MediaResourceID: 90, 94 | IsColorable: 1, 95 | LayerID: 50, 96 | BodyPartTypeId: 8 97 | }; 98 | bodyParts["68"] = { 99 | Id: 95, 100 | BodyPartId: 68, 101 | MediaResourceID: 95, 102 | IsColorable: 1, 103 | LayerID: 50, 104 | BodyPartTypeId: 8 105 | }; 106 | bodyParts["71"] = { 107 | Id: 96, 108 | BodyPartId: 71, 109 | MediaResourceID: 96, 110 | IsColorable: 1, 111 | LayerID: 50, 112 | BodyPartTypeId: 8 113 | }; 114 | bodyParts["72"] = { 115 | Id: 97, 116 | BodyPartId: 72, 117 | MediaResourceID: 97, 118 | IsColorable: 1, 119 | LayerID: 50, 120 | BodyPartTypeId: 8 121 | }; 122 | bodyParts["73"] = { 123 | Id: 98, 124 | BodyPartId: 73, 125 | MediaResourceID: 98, 126 | IsColorable: 1, 127 | LayerID: 50, 128 | BodyPartTypeId: 8 129 | }; 130 | bodyParts["13"] = { 131 | Id: 59, 132 | BodyPartId: 13, 133 | MediaResourceID: 59, 134 | IsColorable: 0, 135 | LayerID: 30, 136 | BodyPartTypeId: 7 137 | }; 138 | bodyParts["21"] = { 139 | Id: 61, 140 | BodyPartId: 21, 141 | MediaResourceID: 61, 142 | IsColorable: 0, 143 | LayerID: 30, 144 | BodyPartTypeId: 7 145 | }; 146 | bodyParts["27"] = { 147 | Id: 65, 148 | BodyPartId: 27, 149 | MediaResourceID: 65, 150 | IsColorable: 0, 151 | LayerID: 30, 152 | BodyPartTypeId: 7 153 | }; 154 | bodyParts["35"] = { 155 | Id: 70, 156 | BodyPartId: 35, 157 | MediaResourceID: 70, 158 | IsColorable: 0, 159 | LayerID: 30, 160 | BodyPartTypeId: 7 161 | }; 162 | bodyParts["40"] = { 163 | Id: 74, 164 | BodyPartId: 40, 165 | MediaResourceID: 74, 166 | IsColorable: 0, 167 | LayerID: 30, 168 | BodyPartTypeId: 7 169 | }; 170 | bodyParts["47"] = { 171 | Id: 79, 172 | BodyPartId: 47, 173 | MediaResourceID: 79, 174 | IsColorable: 0, 175 | LayerID: 30, 176 | BodyPartTypeId: 7 177 | }; 178 | bodyParts["56"] = { 179 | Id: 85, 180 | BodyPartId: 56, 181 | MediaResourceID: 85, 182 | IsColorable: 0, 183 | LayerID: 30, 184 | BodyPartTypeId: 7 185 | }; 186 | bodyParts["64"] = { 187 | Id: 91, 188 | BodyPartId: 64, 189 | MediaResourceID: 91, 190 | IsColorable: 0, 191 | LayerID: 30, 192 | BodyPartTypeId: 7 193 | }; 194 | bodyParts["64"] = { 195 | Id: 91, 196 | BodyPartId: 64, 197 | MediaResourceID: 91, 198 | IsColorable: 0, 199 | LayerID: 30, 200 | BodyPartTypeId: 7 201 | }; 202 | bodyParts["12"] = { 203 | Id: 58, 204 | BodyPartId: 12, 205 | MediaResourceID: 58, 206 | IsColorable: 0, 207 | LayerID: 40, 208 | BodyPartTypeId: 6 209 | }; 210 | bodyParts["31"] = { 211 | Id: 68, 212 | BodyPartId: 31, 213 | MediaResourceID: 68, 214 | IsColorable: 0, 215 | LayerID: 40, 216 | BodyPartTypeId: 6 217 | }; 218 | bodyParts["50"] = { 219 | Id: 82, 220 | BodyPartId: 50, 221 | MediaResourceID: 82, 222 | IsColorable: 0, 223 | LayerID: 40, 224 | BodyPartTypeId: 6 225 | }; 226 | bodyParts["59"] = { 227 | Id: 88, 228 | BodyPartId: 59, 229 | MediaResourceID: 88, 230 | IsColorable: 0, 231 | LayerID: 40, 232 | BodyPartTypeId: 6 233 | }; 234 | bodyParts["67"] = { 235 | Id: 94, 236 | BodyPartId: 67, 237 | MediaResourceID: 94, 238 | IsColorable: 0, 239 | LayerID: 40, 240 | BodyPartTypeId: 6 241 | }; 242 | bodyParts["4"] = { 243 | Id: 57, 244 | BodyPartId: 4, 245 | MediaResourceID: 57, 246 | IsColorable: 0, 247 | LayerID: 26, 248 | BodyPartTypeId: 5 249 | }; 250 | bodyParts["30"] = { 251 | Id: 67, 252 | BodyPartId: 30, 253 | MediaResourceID: 67, 254 | IsColorable: 0, 255 | LayerID: 26, 256 | BodyPartTypeId: 5 257 | }; 258 | bodyParts["49"] = { 259 | Id: 81, 260 | BodyPartId: 49, 261 | MediaResourceID: 81, 262 | IsColorable: 0, 263 | LayerID: 26, 264 | BodyPartTypeId: 5 265 | }; 266 | bodyParts["58"] = { 267 | Id: 87, 268 | BodyPartId: 58, 269 | MediaResourceID: 87, 270 | IsColorable: 0, 271 | LayerID: 26, 272 | BodyPartTypeId: 5 273 | }; 274 | bodyParts["66"] = { 275 | Id: 93, 276 | BodyPartId: 66, 277 | MediaResourceID: 93, 278 | IsColorable: 0, 279 | LayerID: 26, 280 | BodyPartTypeId: 5 281 | }; 282 | bodyParts["23"] = { 283 | Id: 63, 284 | BodyPartId: 23, 285 | MediaResourceID: 63, 286 | IsColorable: 0, 287 | LayerID: 41, 288 | BodyPartTypeId: 11 289 | }; 290 | bodyParts["37"] = { 291 | Id: 72, 292 | BodyPartId: 37, 293 | MediaResourceID: 72, 294 | IsColorable: 0, 295 | LayerID: 41, 296 | BodyPartTypeId: 11 297 | }; 298 | bodyParts["42"] = { 299 | Id: 76, 300 | BodyPartId: 42, 301 | MediaResourceID: 76, 302 | IsColorable: 0, 303 | LayerID: 41, 304 | BodyPartTypeId: 11 305 | }; 306 | bodyParts["74"] = { 307 | Id: 99, 308 | BodyPartId: 74, 309 | MediaResourceID: 99, 310 | IsColorable: 0, 311 | LayerID: 55 312 | }; 313 | bodyParts["75"] = { 314 | Id: 100, 315 | BodyPartId: 75, 316 | MediaResourceID: 100, 317 | IsColorable: 0, 318 | LayerID: 55 319 | }; 320 | bodyParts["76"] = { 321 | Id: 101, 322 | BodyPartId: 76, 323 | MediaResourceID: 101, 324 | IsColorable: 0, 325 | LayerID: 55 326 | }; 327 | bodyParts["76"] = { 328 | Id: 101, 329 | BodyPartId: 76, 330 | MediaResourceID: 101, 331 | IsColorable: 0, 332 | LayerID: 55 333 | }; 334 | bodyParts["77"] = { 335 | Id: 102, 336 | BodyPartId: 77, 337 | MediaResourceID: 102, 338 | IsColorable: 0, 339 | LayerID: 55 340 | }; 341 | bodyParts["78"] = { 342 | Id: 103, 343 | BodyPartId: 78, 344 | MediaResourceID: 103, 345 | IsColorable: 0, 346 | LayerID: 55 347 | }; 348 | -------------------------------------------------------------------------------- /daisy/locations.asc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | var locationsArray = []; 6 | 7 | locationsArray["-1"] =''; 8 | 9 | locationsArray["24"] = ''; 10 | 11 | // Затерянный каньон 12 | 13 | locationsArray["226"] = ''; 14 | 15 | // Автодром 16 | 17 | locationsArray["35"] = ''; 18 | locationsArray["29"] = locationsArray["35"]; 19 | 20 | // Школа магов 21 | 22 | locationsArray["63"] = ''; 23 | 24 | // Пиратская бухта 25 | 26 | locationsArray["374"] = ''; 27 | 28 | locationsArray["532"] = ''; 29 | 30 | // Парк аттракционов 31 | 32 | locationsArray["22"] = '' 33 | locationsArray["8"] = locationsArray["22"]; 34 | // Лес 35 | 36 | locationsArray["18"] = ''; 37 | 38 | locationsArray["45"] = locationsArray["18"]; 39 | 40 | // Порт 41 | 42 | 43 | locationsArray["53"] = ''; 44 | locationsArray["17"] = locationsArray["53"]; 45 | 46 | // Снежная гора 47 | 48 | locationsArray["31"] = ''; 49 | 50 | // Подводный мир 51 | 52 | locationsArray["54"] = ''; 53 | 54 | // Космодром 55 | 56 | locationsArray["412"] = ''; 57 | 58 | 59 | // Клубная площадь 60 | 61 | locationsArray["727"] = ' callback_uidezdoleu '; 62 | // Пляж 63 | 64 | locationsArray["27"] = ''; 65 | //locationsArray["170"] = locationsArray["27"]; 66 | //locationsArray["532"] = locationsArray["27"]; 67 | // Главная площадь 68 | 69 | locationsArray["23"] =''; 70 | locationsArray["51"] = locationsArray["23"]; 71 | 72 | // Сити 73 | 74 | locationsArray["68"] = ''; 75 | 76 | 77 | // Каньон 78 | //locationsArray[""] = ''; 79 | 80 | // Комната наблюдения 81 | locationsArray["503"] = ' '; 82 | 83 | // Дом Мод (прочитайте наоборот :D) 84 | 85 | locationsArray["40"] = ''; 86 | 87 | // Штаб 88 | 89 | locationsArray["501"] = ''; 90 | 91 | // Площадь у больнички 92 | 93 | locationsArray["47"] = ''; 94 | 95 | // Остальное 96 | 97 | locationsArray["default"] = ''; 98 | locationsArray["38"] = locationsArray["default"]; 99 | locationsArray["0"] = locationsArray["default"]; 100 | locationsArray["43"] = locationsArray["default"]; 101 | 102 | 103 | var travelPlaces = []; 104 | 105 | 106 | // Страна роботов 107 | 108 | travelPlaces["53"] = ''; 109 | 110 | // Джунгли 111 | 112 | travelPlaces["51"] = ''; 113 | 114 | 115 | // Египет 116 | 117 | travelPlaces["26"] = ''; 118 | -------------------------------------------------------------------------------- /daisy/main.asc: -------------------------------------------------------------------------------- 1 | load("items.asc"); 2 | load("locations.asc"); 3 | load("bodyparts.asc"); 4 | 5 | var msHost = "http://localhost"; 6 | 7 | var homeInv = [{ 8 | ID: 3676, 9 | AObjectTypeId: 1, 10 | AObjectId: 3676, 11 | AObjectRefTypeId: 20, 12 | MediaResourceID: 10223, 13 | TextResourceID: 10641, 14 | IsActive: 0 15 | }, { 16 | ID: 8326, 17 | AObjectTypeId: 1, 18 | AObjectId: 8326, 19 | AObjectRefTypeId: 20, 20 | MediaResourceID: 26415, 21 | TextResourceID: 26240, 22 | IsActive: 0 23 | }]; 24 | 25 | var sbox = new Array(255); 26 | var mykey = new Array(255); 27 | 28 | function objInvToStr(Inventory) { 29 | var str = ""; 30 | 31 | for (var tab in Inventory) { 32 | for (var i = 0; i < Inventory[tab].length; i++) { 33 | var ms = ""; 34 | for (var key in Inventory[tab][i]) { 35 | if (key != "tab") { 36 | ms = ms + key + ">" + Inventory[tab][i][key] + "|"; 37 | } 38 | } 39 | str += ms + "<"; 40 | } 41 | str = str.slice(0, -1) + ";"; 42 | } 43 | 44 | return str.slice(0, -1); 45 | } 46 | 47 | function meme(Id) { 48 | return g[Id]; 49 | } 50 | // 51 | 52 | // 53 | // 54 | //var Inventory = { 0: [{tab: ''}, {ID:16, IsUsed:0, IsLimited:0, GoodID: 16, Date: "2018-12-28T19:50:31.107", MediaResourceID: 456, TextResourceID: 217}, {ID:15, IsUsed:0, IsLimited:0, GoodID: 15, Date: "2018-12-28T19:50:31.107", MediaResourceID: 455, TextResourceID: 216}, {ID:8, IsUsed:0, IsLimited:0, GoodID: 8, Date: "2018-12-28T19:50:31.107", MediaResourceID: 16, TextResourceID: 24615}, {ID:338, IsUsed:0, IsLimited:0, GoodID: 338, Date: "2018-12-28T19:50:31.107", MediaResourceID: 621}, {ID:235, IsUsed:0, IsLimited:0, GoodID: 235, Date: "2018-12-28T19:50:31.107", MediaResourceID: 560, TextResourceID: 117}, {ID:179, IsUsed:0, IsLimited:0, GoodID: 179, Date: "2018-12-28T19:50:31.107", MediaResourceID: 510}, {ID:25, IsUsed:0, IsLimited:0, GoodID: 25, Date: "2018-12-28T19:50:31.107", MediaResourceID: 11151, TextResourceID: 13963}, {ID:24, IsUsed:0, IsLimited:0, GoodID: 24, Date: "2018-12-28T19:50:31.107", MediaResourceID: 10395, TextResourceID: 13962}, {ID:4, IsUsed:0, IsLimited:0, GoodID: 4, Date: "2018-12-28T19:50:31.107", MediaResourceID: 452, TextResourceID: 213}, {ID:18, IsUsed:0, IsLimited:0, GoodID: 18, Date: "2018-12-28T19:50:31.107", MediaResourceID: 442, TextResourceID: 495}, {ID:3075, IsUsed:0, IsLimited:0, GoodID: 3075, Date: "2018-12-28T19:50:31.107", MediaResourceID: 7303, TextResourceID: 13997}, {ID:6152, IsUsed:0, IsLimited:0, GoodID: 6152, Date: "2018-12-28T19:50:31.107", MediaResourceID: 532, TextResourceID: 586}, {ID:2235, IsUsed:0, IsLimited:0, GoodID: 2235, Date: "2018-12-28T19:50:31.107", MediaResourceID: 4142, TextResourceID: 3033}], 1: [{tab:''}, {ID:17, IsUsed:0, IsLimited:0, GoodID: 17, Date: "2018-12-28T19:50:31.107", MediaResourceID: 13, TextResourceID: 201}], 2: [{tab: ''}]}; 55 | 56 | 57 | 58 | function makeInvXML(Inventory) { 59 | var InvXML = ''; 60 | for (var i = 0; i < homeInv.length; i++) { 61 | trace(homeInv[i]["ID"]) 62 | var test = '' 65 | } else { 66 | test = test + '">'; 67 | } 68 | InvXML = InvXML + test; 69 | } 70 | trace(InvXML); 71 | return InvXML; 72 | } 73 | 74 | 75 | //мне пока лень добавлять столько шапок) 76 | // 77 | 78 | //LayerID="36" - одежда 79 | //LayerID="45" - прически 80 | //LayerID="31" - Очки 81 | //LayerID="11" - обувь 82 | //LayerID="56" - аксессуары 83 | //LayerID="27" - костюмы 84 | //LayerID="57" - спутники 85 | //var Inventory = { 0: [{tab: ''}], 1: [{tab:''}], 2: [{tab: ''}], 3: [{tab: ''}], 4: [{tab: ''}], 5: [{tab: ''}]}; 86 | 87 | //g[10568] = {Id:10568,MRId:9983,TRId:10252,GoodTypeId:14,RoleFlags:0,UsualTickets:-1,MagicTickets:-1,DefCurrency:0,LevelThreshold:0,UnlockCost:0,SortOrder:0,PublishDate:"2018-12-29T14:03:06.343",Tags:"",LayerId:31,IsActive:1}; 88 | 89 | function makeXML(inv) { 90 | var bigXML = ''; 91 | for (var m = 0; m < 7; m++) { 92 | var InvXML = inv[m][0]["tab"] 93 | for (var i = 1; i < inv[m].length; i++) { 94 | if (inv[m][i] != undefined) { 95 | var test = '' 98 | } else { 99 | test = test + '" Pollution="0" />' 100 | } 101 | InvXML = InvXML + test; 102 | } 103 | } 104 | bigXML = bigXML + InvXML + ''; 105 | 106 | } 107 | return bigXML; 108 | } 109 | 110 | function getBody(changes) { 111 | var newSmesh = { 112 | RoleFlags: 262144, 113 | User: { 114 | Body: {}, 115 | "State": 0, 116 | "Name": "esme", 117 | "Level": 999, 118 | y: 400, 119 | x: 480 120 | } 121 | }; 122 | for (var i = 0; i < changes["BodyParts"].length; i++) { 123 | var Id = changes["BodyParts"][i]["Id"]; 124 | newSmesh["User"]["Body"][Id] = {}; 125 | newSmesh["User"]["Body"][Id]["IsBodyPart"] = true; 126 | newSmesh["User"]["Body"][Id]["BodyPartTypeId"] = bodyParts[changes["BodyParts"][i]["Id"]]["BodyPartTypeId"]; 127 | newSmesh["User"]["Body"][Id]["MediaResourceID"] = bodyParts[changes["BodyParts"][i]["Id"]]["MediaResourceID"]; 128 | newSmesh["User"]["Body"][Id]["LayerID"] = bodyParts[changes["BodyParts"][i]["Id"]]["LayerID"] - 1; 129 | newSmesh["User"]["Body"][Id]["BodyPartId"] = bodyParts[changes["BodyParts"][i]["Id"]]["BodyPartId"]; 130 | newSmesh["User"]["Body"][Id]["Id"] = changes["BodyParts"][i]["Id"]; 131 | if (changes["BodyParts"][i]["Color"] != undefined) { 132 | newSmesh["User"]["Body"][Id]["Color"] = changes["BodyParts"][i]["Color"]; 133 | } 134 | } 135 | for (var i = 0; i < changes["Inventory"].length; i++) { 136 | var Id = changes["Inventory"][i]["Id"]; 137 | var well = meme(changes["Inventory"][i]["Id"]); 138 | newSmesh["User"]["Body"][Id] = {}; 139 | newSmesh["User"]["Body"][Id]["IsBodyPart"] = false; 140 | newSmesh["User"]["Body"][Id]["GoodID"] = changes["Inventory"][i]["Id"]; 141 | newSmesh["User"]["Body"][Id]["MediaResourceID"] = well["MRId"]; 142 | newSmesh["User"]["Body"][Id]["GoodTypeID"] = well["GoodTypeId"]; 143 | newSmesh["User"]["Body"][Id]["LayerID"] = well["LayerId"]; 144 | newSmesh["User"]["Body"][Id]["Id"] = changes["Inventory"][i]["Id"]; 145 | } 146 | return newSmesh; 147 | } 148 | 149 | 150 | 151 | function parseCoolString(cstr) { 152 | 153 | if (typeof(cstr) !== 'string') { 154 | return; 155 | } 156 | 157 | var pieces = cstr.split("|"); 158 | 159 | var obj = {}; 160 | 161 | for (var i = 0; i < pieces.length; i++) { 162 | var smol = pieces[i].split(">"); 163 | 164 | var mkey = smol[0]; 165 | var mvalue = smol[1]; 166 | 167 | if (mvalue == 'true') { 168 | mvalue = 1; 169 | } else if (mvalue == 'false') { 170 | mvalue = 0; 171 | } 172 | 173 | 174 | obj[mkey] = mvalue; 175 | } 176 | return obj; 177 | } 178 | 179 | function parseNOCTMML(NOCTMML) { 180 | var arr = {}; 181 | 182 | var s = NOCTMML.split(";"); 183 | 184 | for (var i = 0; i < s.length; i++) { 185 | arr[i] = parseCoolString(s[i]); 186 | } 187 | 188 | trace(arr[0]["Id"] + " ID"); 189 | 190 | return arr; 191 | } 192 | 193 | function objectToCoolString(obj) { 194 | var str = ""; 195 | for (var el in obj) { 196 | str += el + ">" + obj[el] + "|"; 197 | } 198 | str = str.slice(0, -1); 199 | return str; 200 | } 201 | 202 | function pseudoArrayToNOCTMML(steam) { 203 | var str = ""; 204 | for (var e in steam) { 205 | str += objectToCoolString(steam[e]) + ";"; 206 | } 207 | str = str.slice(0, -1); 208 | return str; 209 | } 210 | 211 | 212 | function H2CA(hex) { 213 | var _loc3_ = []; 214 | var _loc1_ = hex.substr(0, 2) != "0x" ? 0 : 2; 215 | while (_loc1_ < hex.length) { 216 | _loc3_.push(parseInt(hex.substr(_loc1_, 2), 16)); 217 | _loc1_ = _loc1_ + 2; 218 | } 219 | return _loc3_; 220 | } 221 | var usersArr = []; 222 | 223 | function strToChars(str) { 224 | var codes = new Array(); 225 | for (var i = 0; i < str.length; i++) { 226 | codes.push(str.charCodeAt(i)); 227 | } 228 | return codes; 229 | } 230 | 231 | function charsToHex(chars) { 232 | var result = new String(""); 233 | var hexes = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); 234 | for (var i = 0; i < chars.length; i++) { 235 | result += hexes[chars[i] >> 4] + hexes[chars[i] & 0xf]; 236 | } 237 | return result; 238 | } 239 | 240 | function initialize(pwd) { 241 | var b = 0; 242 | var tempSwap; 243 | var intLength = pwd.length; 244 | for (var a = 0; a <= 255; a++) { 245 | mykey[a] = pwd[(a % intLength)]; 246 | sbox[a] = a; 247 | } 248 | for (var a = 0; a <= 255; a++) { 249 | b = (b + sbox[a] + mykey[a]) % 256; 250 | tempSwap = sbox[a]; 251 | sbox[a] = sbox[b]; 252 | sbox[b] = tempSwap; 253 | } 254 | } 255 | 256 | function calculate(plaintxt, psw) { 257 | initialize(psw); 258 | var i = 0; 259 | var j = 0; 260 | var cipher = new Array(); 261 | var k, temp, cipherby; 262 | for (var a = 0; a < plaintxt.length; a++) { 263 | i = (i + 1) % 256; 264 | j = (j + sbox[i]) % 256; 265 | temp = sbox[i]; 266 | sbox[i] = sbox[j]; 267 | sbox[j] = temp; 268 | var idx = (sbox[i] + sbox[j]) % 256; 269 | k = sbox[idx]; 270 | cipherby = plaintxt[a] ^ k; 271 | cipher.push(cipherby); 272 | } 273 | return cipher; 274 | } 275 | 276 | function rc4(src, key) { 277 | var mtxt = strToChars(src); 278 | var mkey = strToChars(key); 279 | var result = calculate(mtxt, mkey); 280 | return charsToHex(result); 281 | } 282 | 283 | 284 | 285 | 286 | function avaToXML(ava) { 287 | var xml = ""; 288 | for (var e in ava) { 289 | if (ava[e]["IsBodyPart"] == "1") { 290 | xml += '"; 294 | // } else { 295 | xml += " />"; 296 | // } 297 | } else { 298 | xml += ''; 299 | } 300 | } 301 | 302 | return xml; 303 | } 304 | 305 | 306 | application.onConnect = function(client, uid, sid, ticket, hwid) { 307 | trace("hwid " + hwid); 308 | var initialData = new LoadVars(); 309 | initialData.load(msHost + "/kek.php?ticket=" + ticket + "&secret"); 310 | this.acceptConnection(client); 311 | 312 | client.inv = { 313 | 0: [{ 314 | tab: '' 315 | }], 316 | 1: [{ 317 | tab: '' 318 | }], 319 | 2: [{ 320 | tab: '' 321 | }], 322 | 3: [{ 323 | tab: '' 324 | }], 325 | 4: [{ 326 | tab: '' 327 | }], 328 | 5: [{ 329 | tab: '' 330 | }], 331 | 6: [{ 332 | tab: '' 333 | }] 334 | }; 335 | 336 | client.ticket = ticket; 337 | 338 | 339 | initialData.onLoad = function(success) { 340 | trace(this.toString()); 341 | //_NUB(TRID0, TRID1) 342 | client.userObj["User"]["Name"] = this.username; 343 | client.userObj["User"]["Level"] = this.level; 344 | client.userObj["User"]["RoleFlags"] = this.roleflags; 345 | client.userObj["User"]["Money"] = this.money; 346 | client.userObj["User"]["Gold"] = this.gold; 347 | client.userObj["User"]["Magic"] = this.magic; 348 | client.weaponCount = 999999999; 349 | client.userObj["User"]["Body"] = parseNOCTMML(this.avatar); 350 | client.regdate = this.regdate; 351 | client.role = Number(this.roleflags); 352 | client.houseStr = this.houseStr; 353 | client.call("_NNR", null, client.role); 354 | var e = this.inventory.split(";"); 355 | 356 | for (var i = 0; i < e.length; i++) { 357 | var m = e[i].split("<"); 358 | 359 | for (var id = 0; id < m.length; id++) { 360 | var mem = m[id].split("|"); 361 | var obj = {}; 362 | for (var meme = 0; meme < mem.length; meme++) { 363 | var keys = mem[meme].split(">"); 364 | if (keys[1] != undefined) { 365 | obj[keys[0]] = keys[1]; 366 | } 367 | } 368 | if (obj["ID"]) { 369 | client.inv[i][id + 1] = obj; 370 | } 371 | } 372 | } 373 | } 374 | 375 | client.userObj = { 376 | RoleFlags: 2, 377 | User: { 378 | Body: { 379 | "1": { 380 | "State": 1, 381 | Id: 1, 382 | IsBodyPart: true, 383 | Color: 8009440, 384 | BodyPartTypeId: 1, 385 | MediaResourceID: 55, 386 | LayerID: 10, 387 | BodyPartId: "73" 388 | }, 389 | "2": { 390 | IsBodyPart: true, 391 | BodyPartTypeId: "1", 392 | MediaResourceID: 56, 393 | LayerID: 20, 394 | Id: 2, 395 | Color: 8009440, 396 | BodyPartId: "74" 397 | }, 398 | "4": { 399 | IsBodyPart: true, 400 | BodyPartTypeId: "3", 401 | MediaResourceID: 59, 402 | LayerID: 30, 403 | Id: 4, 404 | BodyPartId: "75" 405 | }, 406 | "50": { 407 | IsBodyPart: true, 408 | BodyPartTypeId: "4", 409 | MediaResourceID: 82, 410 | LayerID: 40, 411 | Id: 50, 412 | BodyPartId: "76" 413 | }, 414 | 18108: { 415 | IsBodyPart: false, 416 | MediaResourceID: 464, 417 | GoodID: 38, 418 | GoodTypeID: 4, 419 | Id: 18108, 420 | LayerID: 45 421 | }, 422 | 112: { 423 | IsBodyPart: false, 424 | MediaResourceID: 274, 425 | GoodID: 38, 426 | GoodTypeID: 14, 427 | Id: 112, 428 | LayerID: 31 429 | } 430 | }, 431 | "State": 2, 432 | "Name": "esme", 433 | "Level": 999, 434 | y: 400, 435 | x: 480 436 | } 437 | }; 438 | 439 | client.house = []; 440 | 441 | 442 | client.backgroundID = 339; 443 | 444 | client.location = 2; 445 | 446 | client.smeshID = uid; 447 | 448 | 449 | client.ufr = "1,test|2,kek|3,destator"; 450 | 451 | usersArr[client.smeshID] = client.userObj; 452 | 453 | 454 | client._P = function(point, tweenId) { 455 | 456 | for (var i = 0; i < application.clients.length; i++) { 457 | if (application.clients[i].location == client.location && usersArr[application.clients[i].smeshID] != undefined) { 458 | client.userObj["User"]["x"] = point.x; 459 | client.userObj["User"]["y"] = point.y; 460 | application.clients[i].call("_P", null, client.smeshID, point, tweenId); 461 | } 462 | } 463 | } 464 | 465 | 466 | client._LS = function(descriptor, startPoint, startState) { 467 | client.userObj["User"]["x"] = startPoint.x; 468 | client.userObj["User"]["y"] = startPoint.y; 469 | 470 | if (descriptor != "LOAD") { 471 | trace("descr: " + descriptor.split("$")[2]); 472 | client.location = descriptor.split("$")[2]; 473 | } else { 474 | return "0"; 475 | 476 | } 477 | 478 | var usrs = []; 479 | 480 | for (var i = 0; i < application.clients.length; i++) { 481 | if (application.clients[i].location == client.location && usersArr[application.clients[i].smeshID] != undefined) { 482 | usrs[application.clients[i].smeshID] = application.clients[i].userObj; 483 | application.clients[i].call("_UE", null, client.smeshID, client.userObj); 484 | } 485 | } 486 | 487 | client.call("_LS", null, usrs); 488 | 489 | } 490 | 491 | client._S = function(state) { 492 | 493 | for (var i = 0; i < application.clients.length; i++) { 494 | if (application.clients[i].location == client.location && usersArr[application.clients[i].smeshID] != undefined) { 495 | application.clients[i].call("_S", null, client.smeshID, state); 496 | } 497 | } 498 | } 499 | 500 | 501 | client._SS = function(hidden) { 502 | for (var i = 0; i < application.clients.length; i++) { 503 | if (application.clients[i].location == client.location) { 504 | application.clients[i].call("_SS", null, client.smeshID, hidden); 505 | } 506 | } 507 | } 508 | 509 | client._SCA = function(methodName, data) { 510 | trace(methodName, data); 511 | return "meme"; 512 | } 513 | 514 | client._NSF = function() { 515 | //return ''; 516 | } 517 | 518 | function hStrToArr(str) { 519 | var arr = []; 520 | var pieces = str.split(";"); 521 | 522 | for (var i = 0; i < pieces.length; i++) { 523 | var obj = {}; 524 | var e = pieces[i].split("|"); 525 | 526 | for (var id = 0; id < e.length; id++) { 527 | var p = e[id].split(">"); 528 | obj[p[0].replace(" ", "")] = p[1]; 529 | } 530 | 531 | arr.push(obj); 532 | } 533 | 534 | return arr; 535 | } 536 | 537 | function houseToXML(house) { 538 | //ID>46043197|AObjectTypeId>1|AObjectId>573|AObjectRefTypeId>20|MediaResourceID>1242|TextResourceID>1034|x>219.4|y>246.7; 539 | // 540 | 541 | var xml = ""; 542 | for (var i = 0; i < house.length; i++) { 543 | xml += "" + obj[i][key] + "|"; 574 | } 575 | str = str.slice(0, -1); 576 | str = str + ";"; 577 | } 578 | } 579 | str = str.slice(0, -1); 580 | return str; 581 | } 582 | 583 | client.$ = function(methodName, descr, calledRoomId, arguments, callback) { 584 | if (methodName == "_QV") { 585 | return true; 586 | } else if (methodName == "_QF") { 587 | return true; 588 | } else if (methodName == "_LC") { 589 | 590 | for (var changes in arguments[1]) { 591 | trace(changes); 592 | 593 | for (var changed in arguments[1][changes]) { 594 | trace(changed + " ### " + arguments[1][changes][changed]); 595 | 596 | for (var e in arguments[1][changes][changed]) { 597 | trace(e + " #### " + arguments[1][changes][changed][e]); 598 | if (changes == "Remove") { 599 | var harr = hStrToArr(client.houseStr); 600 | for (var i = 0; i < harr.length; i++) { 601 | trace(harr[i]['ID'] + "harry"); 602 | if (harr[i]['ID'] == changed) { 603 | trace("found!!"); 604 | harr[i] = undefined; 605 | client.houseStr = hObjToStr(harr); 606 | } 607 | } 608 | } else if (changes == "Change") { 609 | var houseArr = hStrToArr(client.houseStr); 610 | 611 | for (var i = 0; i < houseArr.length; i++) { 612 | if (houseArr[i]['ID'] == changed) { 613 | houseArr[i]['x'] = arguments[1][changes][changed]['x']; 614 | houseArr[i]['y'] = arguments[1][changes][changed]['y']; 615 | client.houseStr = hObjToStr(houseArr); 616 | trace("new str: " + client.houseStr); 617 | } 618 | } 619 | 620 | } else if (changes == "Add") { 621 | var ek = [arguments[1][changes][changed]]; 622 | client.houseStr = client.houseStr + hObjToStr(ek); 623 | } 624 | } 625 | } 626 | } 627 | if (descr == "ROOM") { 628 | for (var i = 0; i < application.clients.length; i++) { 629 | application.clients[i].call("_LC", null, client.smeshID, arguments[1], arguments[2]); 630 | } 631 | } 632 | 633 | } else if (methodName == "_SCA") { 634 | return true; 635 | } else if (methodName == "_QI") { 636 | return "0"; 637 | } else if (methodName == "_NUC") { 638 | if (client.role >= "393230") { 639 | var ban = new LoadVars(); 640 | ban.id = arguments[0]; 641 | ban.ticket = client.ticket; 642 | ban.send(msHost + "/ban.php"); 643 | for (var i = 0; i < application.clients.length; i++) { 644 | if (application.clients[i].smeshID == arguments[0]) { 645 | application.clients[i].call("_NUB", [arguments[0], 162]); 646 | } 647 | } 648 | } 649 | } else if (methodName == "_WAR") { 650 | if (client.role >= "393230") { 651 | 652 | for (var i = 0; i < application.clients.length; i++) { 653 | if (application.clients[i].smeshID == arguments) { 654 | application.disconnect(application.clients[i]); 655 | } 656 | } 657 | } 658 | } else if (methodName == "_BG") { 659 | 660 | 661 | } else if (methodName == "_SDB") { 662 | client.backgroundID = arguments[0]; 663 | trace(client.backgroundID + "bg"); 664 | } else if (methodName == "_GG") { 665 | // var _loc8_ = {index:"ID",remove_index:false,convert:{ID:Number,MediaResourceID:Number,TextResourceID:Number,MaxUsersCount:Number,MinUsersCount:Number,LackTime:Number,ScoreDivisor:Number,AvatarType:Number,MenuState:Number,MessageID:Number,StartLackTime:Number,StartFullTime:Number,IsPromptUsed:$.ToBoolean,IsFullscreen:$.ToBoolean,IsShowPoints:$.ToBoolean,Token:String}}; 666 | // return ''; 667 | return ''; 668 | } else if (methodName == "_UUG") { 669 | return arguments; 670 | } else if (methodName == "_SAG") { 671 | //return {NameTRId: , BestsaleGoodIds, Goods Id, DaysLeft}; 672 | return { 673 | callback_uid: callback 674 | }; 675 | } else if (methodName == "_GD") { 676 | return "0"; 677 | } else if (methodName == "_CUR") { 678 | return H2CA(rc4("", "_level0")); 679 | } else if (methodName == "_MSTL") { 680 | return []; 681 | } else if (methodName == "_GD") { 682 | return ""; 683 | } else if (methodName == "_GCI") { 684 | if (arguments == 4) { 685 | return ''; 686 | } 687 | } else if (methodName == "_C") { 688 | trace("текст ", arguments[1], "id ", client.smeshID); 689 | 690 | if (arguments[1].indexOf("$G$") > -1) { 691 | var ret = arguments[1].replace("$G$", ""); 692 | var m = Number(ret); 693 | var item = meme(Number(ret)); 694 | 695 | var newItem = { 696 | ID: item["Id"], 697 | IsUsed: 0, 698 | IsLimited: 0, 699 | GoodID: item["Id"], 700 | Date: "2018-12-28T19:50:31.107", 701 | MediaResourceID: item["MRId"], 702 | TextResourceID: item["TRId"] 703 | }; 704 | if (item["Id"] != "undefined") { 705 | if (item["LayerId"] == 36) { 706 | client.inv[0].push(newItem); 707 | } else if (item["LayerId"] == 45) { 708 | client.inv[1].push(newItem); 709 | } else if (item["LayerId"] == 31) { 710 | client.inv[2].push(newItem); 711 | } else if (item["LayerId"] == 11) { 712 | client.inv[3].push(newItem); 713 | } else if (item["LayerId"] == 56) { 714 | client.inv[4].push(newItem); 715 | } else if (item["LayerId"] == 27) { 716 | client.inv[5].push(newItem); 717 | } else if (item["LayerId"] == 57) { 718 | client.inv[6].push(newItem); 719 | } else { 720 | trace("такого объекта нет!"); 721 | } 722 | 723 | } 724 | updateInventory(client.ticket, client.inv); 725 | return; 726 | } 727 | 728 | 729 | for (var i = 0; i < application.clients.length; i++) { 730 | if (application.clients[i].location == client.location) { 731 | application.clients[i].call("_C", null, client.smeshID, arguments[1]); 732 | } 733 | } 734 | } else if (methodName == "_AS") { 735 | // 736 | //trace([0]["BodyParts"][0]["Id"]); 737 | //"18108": { IsBodyPart: false, MediaResourceID: 464, GoodID: 38, GoodTypeID: 4, Id: 18108, LayerID: 45} 738 | var test = getBody(arguments[0]); 739 | var changes = arguments[0]; 740 | 741 | for (var i = 0; i < 7; i++) { 742 | for (var itemId = 1; itemId < client.inv[i].length; itemId++) { 743 | if (client.inv[i][itemId] != undefined) { 744 | client.inv[i][itemId]["IsUsed"] = "0"; 745 | } 746 | } 747 | } 748 | 749 | 750 | for (var i = 0; i < changes["Inventory"].length; i++) { 751 | var Id = changes["Inventory"][i]["Id"]; 752 | var well = meme(changes["Inventory"][i]["Id"]); 753 | 754 | for (var id = 0; id < 7; id++) { 755 | for (var m = 0; m < client.inv[id].length; m++) { 756 | if (client.inv[id][m] != undefined && client.inv[id][m]["ID"] == Id) { 757 | client.inv[id][m]["IsUsed"] = "1"; 758 | } 759 | } 760 | } 761 | } 762 | 763 | client.userObj["User"]["Body"] = test["User"]["Body"]; 764 | 765 | usersArr[client.smeshID] = client.userObj; 766 | 767 | updateInventory(client.ticket, client.inv); 768 | 769 | var lv = new LoadVars(); 770 | lv.avatar = pseudoArrayToNOCTMML(client.userObj['User']['Body']); 771 | lv.ticket = client.ticket; 772 | lv.send(msHost + "/setAvatar.php"); 773 | for (var i = 0; i < application.clients.length; i++) { 774 | if (application.clients[i].location == client.location) { 775 | application.clients[i].call("_D", null, client.smeshID, client.userObj); 776 | } 777 | } 778 | 779 | return callback; 780 | } else if (methodName == "_CAQ") { 781 | return { 782 | "2": { 783 | "0": "1", 784 | "1": "esme" 785 | } 786 | }; 787 | } else if (methodName == "_FL") { 788 | return ''; 789 | } else if (methodName == "_AG") { 790 | trace("_AG"); 791 | return '' + makeXML(client.inv) + ''; 792 | } else if (methodName == "_UI") { 793 | trace("_UI"); 794 | for (var i = 0; i < application.clients.length; i++) { 795 | if (application.clients[i].smeshID == arguments) { 796 | var cl = application.clients[i]; 797 | } 798 | } 799 | 800 | return '' + avaToXML(cl.userObj["User"]["Body"]) + ''; 801 | } else if (methodName == "_NUM") { 802 | for (var i = 0; i < application.clients.length; i++) { 803 | if (application.clients[i].location == client.location) { 804 | application.clients[i].call("_NUM", null, arguments[0], arguments[1], arguments[2]); 805 | } 806 | } 807 | } else if (methodName == "_NUS") { 808 | for (var i = 0; i < application.clients.length; i++) { 809 | if (application.clients[i].location == client.location) { 810 | application.clients[i].call("_NUS", null, client.smeshID, arguments[1], arguments[2]); 811 | } 812 | } 813 | } else if (methodName == "_I") { 814 | trace("_I"); 815 | var magic = '' 816 | for (i = 1; i < 282; i++) { 817 | magic += ''; 818 | } 819 | var putin = [H2CA(rc4('' + avaToXML(client.userObj["User"]["Body"]) + '' + magic + '', "_level0"))]; 820 | return putin; 821 | } else if (methodName == "_UFG") { 822 | var obj = {}; 823 | /* 824 | var u = client.ufg.split("|"); 825 | 826 | for (var i = 0; i < u.length; i++) { 827 | var s = u[i].split(","); 828 | obj[s[0]] = { 829 | userId: s[0], 830 | UserName: s[1], 831 | IsOnline: true 832 | }; 833 | } 834 | */ 835 | return obj; 836 | 837 | } else if (methodName == "_UFR") { 838 | var obj = {}; 839 | /* 840 | var ufrstr = client.ufr.split("|"); 841 | for (var i = 0; i < ufrstr.length; i++) { 842 | var splitted = ufrstr[i].split(","); 843 | obj[i] = { 844 | userId: 3, 845 | UserName: splitted[1] 846 | }; 847 | } 848 | */ 849 | return obj; 850 | } else if (methodName == "_CM") { 851 | return ""; 852 | } else if (methodName == "_LDH") { 853 | return ''; 854 | } else if (methodName == "_SNFP") { 855 | return ' '; 856 | } else if (methodName == "_D") { 857 | for (var i = 0; i < application.clients.length; i++) { 858 | if (application.clients[i].location == client.location) { 859 | application.clients[i].call("_D", null, client.smeshID, client.userObj); 860 | } 861 | } 862 | } else if (methodName == "_LGI") { 863 | return travelPlaces[arguments[0]]; 864 | } else if (methodName == "_LML") { 865 | return ''; 866 | } else if (methodName == "_JD") { 867 | return ''; 868 | } else if (methodName == "_LG") { 869 | 870 | // for (var i = 0; i < application.clients.length; i++) { 871 | // if (application.clients[i].location == client.location && application.clients[i].smeshID != client.smeshID) { 872 | // application.clients[i].call("_UL", null, client.smeshID); 873 | // } 874 | // } 875 | 876 | if (arguments[1] == -1) { 877 | return '' + hstrToXML(client.houseStr) + ''; 878 | } 879 | 880 | if (locationsArray[arguments[1]]) { 881 | return locationsArray[arguments[1]]; 882 | } else { 883 | return locationsArray[23]; 884 | } 885 | } else if (methodName == "_UOG") { 886 | return true; 887 | } else if (methodName == "_GMB") { 888 | return { 889 | "Amount": 900000 890 | }; 891 | } else if (methodName == "_MTB") { 892 | return { 893 | "Success": true 894 | }; 895 | } else if (methodName == "_UOS") { 896 | trace("ШО"); 897 | 898 | if (arguments == "SA_IsFirstStepPassed") { 899 | return true; 900 | } 901 | 902 | client.call("_UOS", null, arguments); 903 | } else if (methodName == "_UFO") { 904 | return '0'; 905 | } else if (methodName == "_GOGI") { 906 | return ''; 907 | } else if (methodName == "_ULNS") { 908 | return true; 909 | } else if (methodName == "_DA") { 910 | return ''; 911 | } else if (methodName == "_GSD") { 912 | return ''; 913 | } else if (methodName == "_BGB") { 914 | 915 | for (var id in arguments[0][0]["item"]) { 916 | var value = arguments[0][0]["item"][id]; 917 | 918 | trace(id + " = " + value); 919 | } 920 | 921 | if (arguments[0][0]["item"]["goodTypeId"] == 20) { 922 | var tesb = { 923 | ID: arguments[0][0]["item"]["id"], 924 | AObjectTypeId: 1, 925 | AObjectId: arguments[0][0]["item"]["id"], 926 | AObjectRefTypeId: 20, 927 | MediaResourceID: arguments[0][0]["item"]["MRid"], 928 | TextResourceID: arguments[0][0]["item"]["TRid"], 929 | IsActive: 0 930 | }; 931 | homeInv.push(tesb); 932 | } else { 933 | 934 | var tesa = { 935 | ID: arguments[0][0]["item"]["id"], 936 | IsUsed: 0, 937 | IsLimited: 0, 938 | GoodID: arguments[0][0]["item"]["id"], 939 | Date: "2018-12-28T19:50:31.107", 940 | MediaResourceID: arguments[0][0]["item"]["MRid"], 941 | TextResourceID: arguments[0][0]["item"]["TRid"] 942 | }; 943 | trace(arguments[0][0]["item"]["layerId"]); 944 | if (arguments[0][0]["item"]["layerId"] == 36) { 945 | client.inv[0].push(tesa); 946 | } else if (arguments[0][0]["item"]["layerId"] == 45) { 947 | client.inv[1].push(tesa); 948 | } else if (arguments[0][0]["item"]["layerId"] == 31) { 949 | client.inv[2].push(tesa); 950 | } else if (arguments[0][0]["item"]["layerId"] == 11) { 951 | client.inv[3].push(tesa); 952 | } else if (arguments[0][0]["item"]["layerId"] == 56) { 953 | client.inv[4].push(tesa); 954 | } else if (arguments[0][0]["item"]["layerId"] == 27) { 955 | client.inv[5].push(tesa); 956 | } else if (arguments[0][0]["item"]["layerId"] == 57) { 957 | client.inv[6].push(tesa); 958 | } 959 | } 960 | 961 | updateInventory(client.ticket, client.inv); 962 | 963 | return { 964 | Error: 0, 965 | Result: '', 966 | GoodInfo: 0, 967 | MagicTickets: 0, 968 | TRId: 0, 969 | GoodTypeId: 0, 970 | IsUnlock: true, 971 | UsualTickets: 0, 972 | GoodId: 0, 973 | GoodTypeTRId: 0, 974 | BelongType: 0 975 | }; 976 | } 977 | } 978 | 979 | client._SCD = function() { 980 | return new Date(); 981 | } 982 | 983 | 984 | } 985 | 986 | application.onDisconnect = function(client) { 987 | usersArr[client.smeshID] = undefined; 988 | 989 | for (var i = 0; i < application.clients.length; i++) { 990 | if (application.clients[i].location == client.location) { 991 | application.clients[i].call("_UL", null, client.smeshID); 992 | } 993 | } 994 | } 995 | --------------------------------------------------------------------------------