|
|
|
|
[Система] Сохранение данных между играми с помощью кэша
|
|
Эллесар | Дата: Суббота, 18 Июня 2011, 05:00:45 | Сообщение # 1 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Представлю небольшой пример, как сохранять integer в одной игре и прочитать в другой, при этом в мультиплеере.
1 отличие от "дата менеджер", то что такой способ не требует, чтобы у всех было прописанно в реестре создание лок файлов.
вот сам код:
Code globals gamecache Maincache = InitGameCache("Game_cache_slh") gamecache Cync = InitGameCache("mycahe2") hashtable MyData = InitHashtable() player cyn_player = null string cyn_Key = null integer cyn_nm=0 endglobals function AddInteger takes player p, string Key, integer i returns nothing local string PlayerName = GetPlayerName(p) if GetLocalPlayer() == p then call StoreInteger(Maincache,PlayerName,Key,i) endif call SaveGameCache(Maincache) set PlayerName = null endfunction function ReadInteger_Cyn takes nothing returns nothing local player p = cyn_player local string Key = cyn_Key local integer nm = cyn_nm local string Player_name = GetPlayerName(p) if GetLocalPlayer() == p then call StoreInteger(Cync,GetPlayerName(p),Key,GetStoredInteger(Maincache,Player_name,Key)) endif call TriggerSyncStart() if GetLocalPlayer()==p then call SyncStoredInteger(Cync,Player_name,Key) endif call TriggerSleepAction(4) call TriggerSyncReady() call TriggerSleepAction(4) call SaveInteger(MyData,GetPlayerId(p),nm,GetStoredInteger(Cync,Player_name,Key)) endfunction function ReadInteger takes player p,string Key,integer nm returns nothing set cyn_player = p set cyn_Key = Key set cyn_nm = nm call ExecuteFunc("ReadInteger_Cyn") endfunction
Что же мы делаем? все давольно просто, читаем данные из кеша нужного игрока и синхронизируем между игроками. функции AddInteger >>> Игрок которому хотим сохранить данные, ключ (строка),переменную которою хотим сохранить ReadInteger >>>Игрок у которого читаем данные, ключ(строка),номер в нашей хеш таблице, куда будет сохранены данные
Чтение из хеш таблицы осуществляется так: LoadInteger(MyData,GetPlayerId(Player(0)),1) вписываем номер игрока, и номер переменной которую хотим прочитать.
Чтение из хеш таблицы стоит производить спустя некоторое время, чтобы данные успели синхроннизоваться.
вот пример:
call AddInteger (Player(0),"data1",15) call ReadInteger(Player(0),"data1",1) call DisplayTextToForce( GetPlayersAll(), I2S(LoadInteger(MyData,GetPlayerId(Player(0)),1) ))
добавляем событие нажатие на Ecs. Сразу число не будет показывать....спустя некоторое время будет появлятся не 0, а число 15.
Если собираетесь сохранять героя, то ставим таймер, после чтение всех переменных, и по окончанию его, загружаем героя из хеш таблицы.
зы: хеш таблицу добавил для удобство, можно было воспользоваться обычным кешем, хотя кому как удобней. так же сохранение/загрузка зависит от имени игрока.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
Сообщение отредактировал Эллесар - Суббота, 18 Июня 2011, 05:04:15 |
|
|
|
subaku | Дата: Суббота, 18 Июня 2011, 08:16:00 | Сообщение # 2 |
6 уровень
Группа: Проверенные
Сообщений: 174
Награды: 0
Репутация: -18
Блокировки:
| Quote (Эллесар) зы: хеш таблицу добавил для удобство, можно было воспользоваться обычным кешем, хотя кому как удобней. так же сохранение/загрузка зависит от имени игрока. Имхо хеш лучше Quote (Эллесар) Чтение из хеш таблицы стоит производить спустя некоторое время, чтобы данные успели синхроннизоваться. Хм... А как это? вроде они сразу должны, при старте?
ФЕНИКС ЧО
|
|
|
|
Эллесар | Дата: Суббота, 18 Июня 2011, 12:46:06 | Сообщение # 3 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Ну я сначало загрузил все переменные) и через 10 секунд загрузил героя, все норм было. можно по эксперементировать... т.е снижать время..
В Дата менеджер, что на xgm, нужно тоже производить эту процедуру. иначе будет десинк.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
SirNikolas | Дата: Суббота, 18 Июня 2011, 13:42:24 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Эллесар, а со строкой такая штука пройдет?
|
|
|
|
Эллесар | Дата: Суббота, 18 Июня 2011, 23:10:39 | Сообщение # 5 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (SirNikolas) Эллесар, а со строкой такая штука пройдет? да.Добавлено (18-06-2011, 16:40) --------------------------------------------- Возникла проблема. с ноута в сингле кеш сохраняется и читается функция ReloadGameCachesFromDisk выдает true. Тестил в батл нете, все таки мои значения прочитали и синхронизировали. Хз) во всяком случае сегодня выложу полностью работоспособную систему -save/load) Добавлено (18-06-2011, 23:10) --------------------------------------------- Вот народ, как обещал:
http://depositfiles.com/files/lx3b0938m
сохранение/загрузка героя без кода с созданием лок файлов. Данные синхронизируется тестили несколько раз, герой загружался корректно хоть использован был TriggerSleepAction.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 02:29:51 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Загрузка специально сделана нубской для нубов? Или по какой то причине там нельзя юзать циклы?
На сколько удалось снизить слип?
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Эллесар | Дата: Пятница, 22 Июля 2011, 01:40:46 | Сообщение # 7 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Faion) Загрузка специально сделана нубской для нубов? Или по какой то причине там нельзя юзать циклы? Ты о чем ?
Quote (Faion) На сколько удалось снизить слип? Это не важно, 10 секунд думаю можно подождать, чтобы загрузить почти неограниченное число переменных
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
Faion | Дата: Пятница, 22 Июля 2011, 11:48:30 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (Эллесар) Ты о чем ?
На сколько я помню, там есть ряд мест которые можно было успешно свернуть по средствам циклов. Сейчас открою, гляну, напишу где.Добавлено (22-07-2011, 11:45) --------------------------------------------- Сам пример сохранения\загрузки. К примеру та часть где загружаются\выгружаются предметы.
Вообще бы я советовал тебе добавить апи функции для сохранения\загрузки, а не только сам метод. Что то типа SaveHero(а тут були, сейвить ли лвл\предметы\состояние здоровья\мп\способности) и тд и тп. В общем я думаю ты понял=) Добавлено (22-07-2011, 11:48) --------------------------------------------- И да, приведи в нормальный вид что ли, в библиотеку засунь, глобалки сделай приватными, функции тоже, а то как то не аккуратно совсем.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Эллесар | Дата: Пятница, 29 Июля 2011, 04:07:05 | Сообщение # 9 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Faion) На сколько я помню, там есть ряд мест которые можно было успешно свернуть по средствам циклов. Сейчас открою, гляну, напишу где. Добавлено (22-07-2011, 11:45) --------------------------------------------- Сам пример сохранения\загрузки. К примеру та часть где загружаются\выгружаются предметы.
Вообще бы я советовал тебе добавить апи функции для сохранения\загрузки, а не только сам метод. Что то типа SaveHero(а тут були, сейвить ли лвл\предметы\состояние здоровья\мп\способности) и тд и тп. В общем я думаю ты понял=)
Добавлено (22-07-2011, 11:48) --------------------------------------------- И да, приведи в нормальный вид что ли, в библиотеку засунь, глобалки сделай приватными, функции тоже, а то как то не аккуратно совсем
замечания не о чем
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
Faion | Дата: Пятница, 29 Июля 2011, 12:19:49 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| кран, это не замечания, а рекомендации. Но если нефига не умеешь, так и скажи, может я потрачу время, и приведу это в человеческий вид.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
SirNikolas | Дата: Суббота, 30 Июля 2011, 11:25:44 | Сообщение # 11 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Faion, извини, но я с тобой не согласен. Эллесар выложил ядро, а интерфейс каждый может сделать себе сам.
|
|
|
|
Faion | Дата: Суббота, 30 Июля 2011, 11:48:20 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (SirNikolas) Faion, извини, но я с тобой не согласен. Эллесар выложил ядро, а интерфейс каждый может сделать себе сам.
Практика показывает что нет. А те кто могут собрать интерфейс, могут и ядро собрать.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Hexing | Дата: Суббота, 30 Июля 2011, 13:11:15 | Сообщение # 13 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| имхо это его дело, и он пишет код так, как ему надо... Но если бы он написал всё готовенько, да и sleep поменял на таймер я бы попользовался.
|
|
|
|
Эллесар | Дата: Суббота, 30 Июля 2011, 16:58:56 | Сообщение # 14 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Hexing) имхо это его дело, и он пишет код так, как ему надо... Но если бы он написал всё готовенько, да и sleep поменял на таймер я бы попользовался. Это не нужно. Приведи аргументы почему слип нельзя?
Quote (Faion) Практика показывает что нет. А те кто могут собрать интерфейс, могут и ядро собрать. да ты просто нуб, и не шаришь, пример, загрузки/Сохранения героя это всего лишь пример а не готовая система. И она сделана настолько просто, на сколько это можно было сделать, чтобы можно было подстроить под свою карту.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
Faion | Дата: Воскресенье, 31 Июля 2011, 14:40:38 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (Hexing) имхо это его дело, и он пишет код так, как ему надо...
Тогда он нафиг выкладывал спрашивается.
Quote (Эллесар) да ты просто нуб, и не шаришь Quote (Эллесар) Приведи аргументы почему слип нельзя?
Лол, и это я нуб? Ну ну, иди учи мат часть, таких простых вещей не знать ._.
В общем впредь постарайся не выкладывать говнокод, окда?
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Эллесар | Дата: Понедельник, 01 Августа 2011, 02:36:41 | Сообщение # 16 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Faion) Лол, и это я нуб? Ну ну, иди учи мат часть, таких простых вещей не знать ._.
В общем впредь постарайся не выкладывать говнокод, окда?
Откуда такие тупари берутся? я прерываю общение с такими рыбами(тебе до моего опыта ещё расти и расти, интерфейсная часть не главное, делал в спешке, поэтому было не до интерфейса,а твои советы были курам на смех)
Код выкладывал, потому что у большинства не получалось работать с файлменеджер с xgm(потому что код не полностью рабочий). Многим помогла эта система, благодарности в личку и просьбы - это единственная мотивация делать подобные вещи.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
Faion | Дата: Понедельник, 01 Августа 2011, 12:12:27 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (Эллесар) тебе до моего опыта ещё расти и расти Действительно: Quote (Эллесар) курам на смех
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Hexing | Дата: Понедельник, 01 Августа 2011, 14:02:24 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| автор злюка
Quote (Эллесар) Тогда он нафиг выкладывал спрашивается. +1
|
|
|
|
Faion | Дата: Понедельник, 01 Августа 2011, 16:04:27 | Сообщение # 19 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Да по моему просто неадекватно реагирует на вполне объективные замечания.
В том же:Quote (Эллесар) файлменеджер с xgm
Все сделано грамотно и допиливать ничего не нужно.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Эллесар | Дата: Понедельник, 01 Августа 2011, 16:34:15 | Сообщение # 20 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Faion) Да по моему просто неадекватно реагирует на вполне объективные замечания. Да у ты уже профейлился в теме функции.
Quote (Hexing) Quote (Эллесар) Тогда он нафиг выкладывал спрашивается. +1 Quote (Эллесар) Код выкладывал, потому что у большинства не получалось работать с файлменеджер с xgm(потому что код не полностью рабочий). Многим помогла эта система, благодарности в личку и просьбы - это единственная мотивация делать подобные вещи.
Просто найдите ещё 1 человека, у которого дошли руки довести дата менеджер и выложить в интернет ? таких нет.
Quote (Faion) Все сделано грамотно и допиливать ничего не нужно.
Попробуй его использовать в мульти плеере. Он не синхронизирует данные, у всех он вызывает десинк
ЗЫ: скоро выложу пример мультиплеерной компанией, с подержкой неограниченного числа игроков(с условием если имеется открытый ftp сервер или настроенная локальная сеть(которую можно имимтировать)).
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
Сообщение отредактировал Эллесар - Понедельник, 01 Августа 2011, 16:42:53 |
|
|
|
Faion | Дата: Понедельник, 01 Августа 2011, 22:24:00 | Сообщение # 21 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (Эллесар) Да у ты уже профейлился в теме функции.
Quote (Эллесар) Просто найдите ещё 1 человека, у которого дошли руки довести дата менеджер и выложить в интернет ? таких нет.
Лол? А теперь зайди на хгм, глянь, и сравни со своим "трудом". Там давно решена проблема локальных файлов, все сделано грамотно, и ничего лишнего.
Quote (Эллесар) Да у ты уже профейлился в теме функции.
Лол, твое незнание работы вейтов, не идет ни в какое сравнение с тем случаем, где я тупанул прост.
Quote (Эллесар) Попробуй его использовать в мульти плеере. Он не синхронизирует данные, у всех он вызывает десинк
Лол, все работает там, у тебя прост руки кривые.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
DragoN | Дата: Понедельник, 01 Августа 2011, 23:57:46 | Сообщение # 22 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| Enein выкладывал с таймерами(для синхронизации) вторая страница что-ли
El Psy Congroo
|
|
|
|
Эллесар | Дата: Вторник, 02 Августа 2011, 00:32:11 | Сообщение # 23 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Faion) Лол, твое незнание работы вейтов, не идет ни в какое сравнение с тем случаем, где я тупанул прост. Я прекрасно их знаю по лучше других, так как знаю изначальный их код и это было ещё в 2008 году, когда кинули исходники.
я поражаюсь людям, которые стараются казаться за умными, вычитав 2-3 строчки на форумах, хотя собственный уровень настолько низкий, что нечего сделать не могут нормально, к тому же подобный стиль общения, свойственным толстым троллям, не свойствен твоему возрасту, который указан в инфе, у меня тоже такое было когда было 15 лет. Если ты ставишь меня под сомнения мой большой опыт и знания в картостроительстве, то прошу доказать в виде дуэли, я в себе уверен.
Quote (DragoN) Enein выкладывал с таймерами(для синхронизации) вторая страница что-ли
Хз качал все версии, и все вызывали десинки в мультиплеере.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
Faion | Дата: Вторник, 02 Августа 2011, 00:47:06 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (Эллесар) я поражаюсь людям, которые стараются казаться за умными, вычитав 2-3 строчки на форумах, хотя собственный уровень настолько низкий, что нечего сделать не могут нормально, к тому же подобный стиль общения, свойственным толстым троллям, не свойствен твоему возрасту, который указан в инфе, у меня тоже такое было когда было 15 лет. Если ты ставишь меня под сомнения мой большой опыт и знания в картостроительстве, то прошу доказать в виде дуэли, я в себе уверен.
Чсв не жмет?=) Я бы на твоем месте постеснялся позиционировать себя как отца jass, учитывая что ты не знаешь как работает тот же слип, про вейты наверняка тоже не знаешь. Я уже не говорю о серьезных вещах, типо ООП в jass. В общем не позорься нуб.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Эллесар | Дата: Вторник, 02 Августа 2011, 03:27:57 | Сообщение # 25 |
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
| Quote (Faion) Чсв не жмет?=) Я бы на твоем месте постеснялся позиционировать себя как отца jass, учитывая что ты не знаешь как работает тот же слип, про вейты наверняка тоже не знаешь. Я уже не говорю о серьезных вещах, типо ООП в jass. В общем не позорься нуб.
Ты читать разучился рыбка ?) у меня были все коды всех функции, хотя смотрел более интереснее, таймер создает новый поток с числом ограниченных действий в нём, слип работает в данном потоке, если не так важна точность времени можно использовать слип(тока правильно, как я привел в карте, ничего не случится и багов не будет) он рвет данный поток, но в этом ничего страшного нет.Да и ты ещё не представляешь скорее всего, какие можно сделать фичы с помощью слипа, кроме отсрочивание времени.
Насмешил)) это ещё 1 фейл с твоей стороны. Ты разве не знаешь как он устроен?) что это всего лишь имитация?Добавлено (02-08-2011, 03:27) --------------------------------------------- Все что ты говоришь, это не мой уровень. Это детский сад, мой: создание модов для Доты(работа с архивами), подзагрузка данных о юнитах и скилах с открытого фтп сервера, синхронизация данных в самых экзотических условиях, создание мультиплеерной компанией с поддержкой любого числа игроков.
база паролей: https://yadi.sk/d/mdDhWuvPcTSKw бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
|
|
|
|
|
|
|
|
|
|
|