- Laravel background jobs
12345678910
WT форуми -> PHP MySQL ASP.NET -> Laravel background jobs
Създайте нова тема Напишете отговор 
Автор Съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 56
Bonus: 112
Мнения: 761
Мнение 27/04/2018 7:01 pm      Отговорете с цитат


resources - съдържа събраните от потребителя ресурси
SQL code:

user_id
total_gold
total_iron
total_stone


Пример:
Потребителя в момента има:
* Злато - 1500
* Желязо - 300
* Камък - 765
________________________________________

resources_per_min - съдържа по колко ресурси да събира на минута(ако искаш ги пази и на час, просто ще трябва да делиш на 60)
SQL code:

user_id
gold_per_min
iron_per_min
stone_per_min


Пример:
Потребителя на час трябва да прави:
* Злато - 840 (или по 14 на минута)
* Желязо - 180 (или по 3 на минута)
* Камък - 540 (или по 9 на минута)
________________________________________

Процес на минута: (работа на scheduler-a)
Тик 1:
* Злато = 1500 + 14 = 1514
* Желязо = 300 + 3 = 303
* Камък = 765 + 9 = 774

Тик 2:
* Злато = 1514 + 14 = 1528
* Желязо = 303 + 3 = 306
* Камък = 774 + 9 = 783

... продължава надолу ...
________________________________________

Строеж на желязна мина за потребител Х:
1. Взимаме ресурси за построяването
* Злато = 1528 - 180 = 1348
* Желязо = 306 - 30 = 276
* Камък = 783 - 83 = 700

2. Регистрира се задача, която трябва да се изпълни след 10 минути
3. След 10 минути се изпълнява задачата
4. Желязната мина вече трябва да дава по 300 на час(5 на мин)
5. Ъпдейт на resources_per_min
* Злато - 840 (14 на мин) - не се променя
* Желязо - (стари 180 (3 на мин) ) - 300 (5 на мин) - само тази колона променяме от UpdateResourcesPerMinJob
* Камък - 540 (9 на мин) - не се променя
_________________________________________

след 10 минути (предполагаемото време за построяването на новата сграда) ресурсите са следните:

* Злато = 1348 + (14з./мин * 10 мин) = 1488
* Желязо = 276 + (3ж./мин * 10 мин) = 306
* Камък = 700 + (9к./мин * 10 мин) = 790
(Тези са се обновявали през това време от scheduler-a)

От тука вече имаме построена сграда и нова стойност за добива на желязо
... Тик 13:
* Злато = 1488 + 14 = 1502
* Желязо = 306 + 5 = 311
* Камък = 790 + 9 = 799

Тик 14:
* Злато = 1502 + 14 = 1516
* Желязо = 311 + 5 = 316
* Камък = 799 + 9 = 808

И т.н.


Баси, трябва да напиша статия. Аз колкото неща описах тука и както ги описах трябва да си търся и авторско право, хаха. Very Happy
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1768
Мнение 27/04/2018 7:13 pm      Отговорете с цитат


Ще ти дам да поиграеш безплатно Very Happy.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 56
Bonus: 112
Мнения: 761
Мнение 27/04/2018 8:55 pm      Отговорете с цитат


Ти я направи пък. Very Happy
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1768
Мнение 01/05/2018 7:55 am      Отговорете с цитат


До тука всичко е ок, обаче закъсах с цените на сградите. Имам предвид че искам различните сгради да струват повече от един вид ресурс.

Пример:
Златна мина:
* Ниво 1 - 50 злато
* Ниво 2 - 50 злато и 50 камъни
* Ниво 3 - 100 камъни 50 желязо

Някакви идеи?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 161
Bonus: 321
Мнения: 1508
Мнение 01/05/2018 8:10 pm      Отговорете с цитат


Към реда на съответната сграда в таблицата с нивата добави полета за цените - price_stone, price_gold. price_steel.

Ако е ясно, че няма да има други ресурси, това е най-удобния вариант.
Ако често сменяш видове ресурси може би ще трябва да извадиш цените в отделна таблица с колони примерно:
element_id [id към таблицата с нивата на сградите]
price_type [ enum 'stone'/'gold'/'steel' ]
price_value int

Но ако ще са само 3 веднъж завинаги, ще ти е по-удобно да си ги държиш като колони в таблицата с нивата.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1768
Мнение 02/05/2018 7:00 am      Отговорете с цитат


Да ги държа в таблицата с нивата мисля че няма да се получи, защото ново id се създава само при нов юзър, а нивата се ъпдейтват. Дори да добавя още полета няма да може да е различна цената за всяко ниво.

Пример:
Таблица с нивата:
* user_id - 1
* gold_mine - 0
* iron_mine - 0
* stone_mine - 0

Дори да направя още една таблица пак не виждам как ще определям цената за всяка мина и всяко ниво. За да стане май трябва да направя отделна таблица за всяка мина, която да е попълнена според това колко нива ще имам, например 10.

Може и да греша тотално, което няма да е невероятно Very Happy .
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 56
Bonus: 112
Мнения: 761
Мнение 02/05/2018 1:58 pm      Отговорете с цитат


Не е нужно. В една таблица слагаш данните за всяко ниво на всяка сграда.

SQL code:

building_id
level
price_gold
price_stone
price_iron


Като building_id и level могат да са ти индекси.

Така, когато строиш взимаш id на текущата сграда и текущото ниво на сградата + 1 и взимаш данните.

Така или иначе, ако нямаш формула за някакво експоненционално увеличение на ресурсите, ще трябва да си направиш таблица.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1768
Мнение 02/05/2018 2:05 pm      Отговорете с цитат


Нещо не можах да схвана идеята. Как ще изведа цената за всяка мина на всеки юзър ако е съставена от повече от един ресурс?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 56
Bonus: 112
Мнения: 761
Мнение 02/05/2018 2:18 pm      Отговорете с цитат


В тази примерна таблица записваш данните на всяка сграда, която имаш, като за съответното ниво записваш колко ресурс да иска. Следователно, ако искаш 2 ресурса за определено ниво, просто пишеш 0 на мястото на конкретния ресурс.
В отделна таблица си записваш за всеки потребител нивото на сградите.

Нужни ресурси на ниво на сграда
SQL code:

building_id
level
price_gold
price_iron
price_stone


Нива на сградите за потребителите
SQL code:

user_id
building_id
level


Сгради
SQL code:

id
building_name


Така много лесно можеш обработваш данните.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1768
Мнение 02/05/2018 2:47 pm      Отговорете с цитат


Значи това са три таблици?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 56
Bonus: 112
Мнения: 761
Мнение 02/05/2018 2:54 pm      Отговорете с цитат


Ами да. Никога не прави всичко в една таблица. Прочети, ако трябва някъде за дизайн и нормализация на база данни.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1768
Мнение 02/05/2018 3:56 pm      Отговорете с цитат


Добре аз ги направих таблиците, обаче не мога да схвана нещо как ще се попълват. Ще дам пример с таблицата която имах до сега. При регистрация на нов юзър автоматично попълвах id-то и левелите, които после само ъпдейтвах. Един вид нов запис се прави само при нов юзър.


SQL code:

Пример:
Таблица с нивата:
* user_id - 1
* gold_mine - 0
* iron_mine - 0
* stone_mine - 0


Сега да вземем за пример едната от новите таблици.

SQL code:

user_id
building_id
level


Тука на building_id трябват три записа също и на level ако правилно разбирам?

Би ли обяснил по-подробно как да работя с тези таблици.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12345678910
Страница 5 от 10


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети