Сейчас 17:24:25 Пятница, 29 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Система] Сохранение данных между играми с помощью кэша (В мультиплеере)
[Система] Сохранение данных между играми с помощью кэша
ЭллесарДата: Суббота, 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
Блокировки:
Загрузка специально сделана нубской для нубов? Или по какой то причине там нельзя юзать циклы? :o

На сколько удалось снизить слип?


О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
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
Блокировки:
facepalm кран, это не замечания, а рекомендации. Но если нефига не умеешь, так и скажи, может я потрачу время, и приведу это в человеческий вид.

О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
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
Блокировки:
автор злюка angry2

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 лет. Если ты ставишь меня под сомнения мой большой опыт и знания в картостроительстве, то прошу доказать в виде дуэли, я в себе уверен.


facepalm Чсв не жмет?=) Я бы на твоем месте постеснялся позиционировать себя как отца jass, учитывая что ты не знаешь как работает тот же слип, про вейты наверняка тоже не знаешь. Я уже не говорю о серьезных вещах, типо ООП в jass. В общем не позорься нуб.


О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

ЭллесарДата: Вторник, 02 Августа 2011, 03:27:57 | Сообщение # 25
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (Faion)
Чсв не жмет?=) Я бы на твоем месте постеснялся позиционировать себя как отца jass, учитывая что ты не знаешь как работает тот же слип, про вейты наверняка тоже не знаешь. Я уже не говорю о серьезных вещах, типо ООП в jass. В общем не позорься нуб.


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

Quote (Faion)
ООП в jass.

Насмешил)) это ещё 1 фейл с твоей стороны. Ты разве не знаешь как он устроен?) что это всего лишь имитация?

Добавлено (02-08-2011, 03:27)
---------------------------------------------
Все что ты говоришь, это не мой уровень. Это детский сад, мой: создание модов для Доты(работа с архивами), подзагрузка данных о юнитах и скилах с открытого фтп сервера, синхронизация данных в самых экзотических условиях, создание мультиплеерной компанией с поддержкой любого числа игроков.


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Система] Сохранение данных между играми с помощью кэша (В мультиплеере)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz