Compare commits
5
Commits
e2099a3beb
...
92e432d86d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92e432d86d | ||
|
|
194a95974a | ||
|
|
32777404c9 | ||
|
|
02fb314ea6 | ||
|
|
0908d1c148 |
+21
-29
@@ -1,29 +1,21 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
node_modules
|
||||||
/dist
|
/dist
|
||||||
src/configs/newDonateShop/roulette.js
|
|
||||||
src/configs/newDonateShop/items.js
|
# local env files
|
||||||
src/configs/newDonateShop/rarityPrices.js
|
.env.local
|
||||||
src/configs/newDonateShop/primeAccount.js
|
.env.*.local
|
||||||
src/configs/newDonateShop/coinkits.js
|
|
||||||
src/configs/gameMakeWeapon/
|
# Log files
|
||||||
src/configs/gameMetalPlant/
|
npm-debug.log*
|
||||||
src/configs/GameMetalPlant/
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
# local env files
|
|
||||||
.env.local
|
# Editor directories and files
|
||||||
.env.*.local
|
.idea
|
||||||
|
.vscode
|
||||||
# Log files
|
*.suo
|
||||||
npm-debug.log*
|
*.ntvs*
|
||||||
yarn-debug.log*
|
*.njsproj
|
||||||
yarn-error.log*
|
*.sln
|
||||||
|
*.sw?
|
||||||
# Editor directories and files
|
|
||||||
.idea
|
|
||||||
.vscode
|
|
||||||
*.suo
|
|
||||||
*.ntvs*
|
|
||||||
*.njsproj
|
|
||||||
*.sln
|
|
||||||
*.sw?
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -422,3 +422,8 @@
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-400.ttf') format('truetype'); font-weight: 400; font-style: normal; }
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-500.ttf') format('truetype'); font-weight: 500; font-style: normal; }
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-600.ttf') format('truetype'); font-weight: 600; font-style: normal; }
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-700.ttf') format('truetype'); font-weight: 700; font-style: normal; }
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@
|
|||||||
<dialog-menu-overlay v-if="dialogMenuShow"/>
|
<dialog-menu-overlay v-if="dialogMenuShow"/>
|
||||||
<TimerTemo v-if="timeTemo > 0" :time="timeTemo" :length="lengthTemo"/>
|
<TimerTemo v-if="timeTemo > 0" :time="timeTemo" :length="lengthTemo"/>
|
||||||
<LoadScreen v-if="loadScreen"/>
|
<LoadScreen v-if="loadScreen"/>
|
||||||
<MenuPicker/>
|
<MenuPicker v-if="isDev"/>
|
||||||
<!-- <DevConsole v-if="console.show"/> -->
|
<!-- <DevConsole v-if="console.show"/> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
export default {}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default [{ level: 1, exp: 0 }]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default [{ level: 1, exp: 0 }]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default []
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default {}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default { price: 0, paymentForBusinessInDays: 14 }
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default { 0: { Price: 0 } }
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export default {}
|
||||||
@@ -2,8 +2,8 @@ export default {
|
|||||||
namespaced: true,
|
namespaced: true,
|
||||||
state: {
|
state: {
|
||||||
local: null,
|
local: null,
|
||||||
apiURL: "https://play.just-rp.com/api/localize/", //https://play.just-rp.com/api/localize/
|
apiURL: "https://web-whistler-626.redl.app/api/localize/", //https://web-whistler-626.redl.app/api/localize/
|
||||||
listUrl: "https://play.just-rp.com/api/localize/list",
|
listUrl: "https://web-whistler-626.redl.app/api/localize/list",
|
||||||
langs:{
|
langs:{
|
||||||
list:null,
|
list:null,
|
||||||
cur: 'no'
|
cur: 'no'
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ export default {
|
|||||||
sounds,
|
sounds,
|
||||||
loaded:{},
|
loaded:{},
|
||||||
current: "",
|
current: "",
|
||||||
host: "https://play.just-rp.com/sounds"
|
host: "https://web-whistler-626.redl.app/sounds"
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
play(state, {name, volume = 1, loop = false}){
|
play(state, {name, volume = 1, loop = false}){
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
class="animations-list__item"
|
class="animations-list__item"
|
||||||
v-for="item in currentAnimations.array"
|
v-for="item in currentAnimations.array"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
v-bind:style="{ 'background-image': 'url(https://play.just-rp.com/animations/items/' + item.key + '.gif)' }"
|
v-bind:style="{ 'background-image': 'url(https://web-whistler-626.redl.app/animations/items/' + item.key + '.gif)' }"
|
||||||
@click="saveAnim(item)"
|
@click="saveAnim(item)"
|
||||||
>
|
>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
|
|||||||
@@ -63,7 +63,8 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: flex-start;
|
||||||
|
padding: 0 4rem 0 4rem;
|
||||||
}
|
}
|
||||||
&__line-left {
|
&__line-left {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|||||||
@@ -94,12 +94,14 @@ export default {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.tab {
|
.tab {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 7.3rem;
|
||||||
&__side {
|
&__side {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
margin: 0 7.3rem 0 0;
|
margin: 0;
|
||||||
.title {
|
.title {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
font-size: 7.5rem;
|
font-size: 7.5rem;
|
||||||
line-height: 7rem;
|
line-height: 7rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|||||||
@@ -110,13 +110,15 @@ export default {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.tab {
|
.tab {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 6rem;
|
||||||
&__side {
|
&__side {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
.title {
|
.title {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
font-size: 6rem;
|
font-size: 6rem;
|
||||||
line-height: 5rem;
|
line-height: 5.4rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
width: 25rem;
|
width: 25rem;
|
||||||
margin: 0 0 0.5rem 0;
|
margin: 0 0 0.5rem 0;
|
||||||
|
|||||||
@@ -64,9 +64,10 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
margin: 0 0 1.9rem 0;
|
margin: 0 0 1.9rem 0;
|
||||||
.title {
|
.title {
|
||||||
font-size: 8.5rem;
|
font-family: 'Oswald', sans-serif;
|
||||||
line-height: 8rem;
|
font-size: 7rem;
|
||||||
font-weight: bold;
|
line-height: 8.5rem;
|
||||||
|
font-weight: 600;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
width: 36.1rem;
|
width: 36.1rem;
|
||||||
|
|||||||
@@ -111,13 +111,15 @@ export default {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.tab {
|
.tab {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 6rem;
|
||||||
&__side {
|
&__side {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
.title {
|
.title {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
font-size: 6rem;
|
font-size: 6rem;
|
||||||
line-height: 5rem;
|
line-height: 5.4rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
width: 25rem;
|
width: 25rem;
|
||||||
margin: 0 0 0.5rem 0;
|
margin: 0 0 0.5rem 0;
|
||||||
|
|||||||
@@ -65,14 +65,16 @@ export default {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.container {
|
.container {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 6rem;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
}
|
}
|
||||||
.about {
|
.about {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
width: 25rem;
|
width: 25rem;
|
||||||
&__title {
|
&__title {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
font-size: 6rem;
|
font-size: 6rem;
|
||||||
line-height: 5rem;
|
line-height: 5.4rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
&__text {
|
&__text {
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ export default {
|
|||||||
width: 7rem;
|
width: 7rem;
|
||||||
min-width: 7rem;
|
min-width: 7rem;
|
||||||
padding-right: 1rem;
|
padding-right: 1rem;
|
||||||
border-right: 1px solid rgba(255, 255, 255, 0.2);
|
border-right: 0.05rem solid rgba(255, 255, 255, 0.2);
|
||||||
padding-bottom: 8rem;
|
padding-bottom: 8rem;
|
||||||
margin: 2rem 1rem 0 0;
|
margin: 2rem 1rem 0 0;
|
||||||
&-info{
|
&-info{
|
||||||
@@ -163,7 +163,7 @@ export default {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding-bottom: 1.5rem;
|
padding-bottom: 1.5rem;
|
||||||
margin-bottom: 1.5rem;
|
margin-bottom: 1.5rem;
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
border-bottom: 0.05rem solid rgba(255, 255, 255, 0.1);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
&-item{
|
&-item{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -177,7 +177,7 @@ export default {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: .9rem;
|
font-size: .9rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
border-radius: 1px;
|
border-radius: 0.05rem;
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
&.active{
|
&.active{
|
||||||
background-color: #B6D300;
|
background-color: #B6D300;
|
||||||
|
|||||||
@@ -103,13 +103,13 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
background: url(/img/optionsMenu/referalsTab/bg.png) no-repeat top -1rem center;
|
background: url(/img/optionsMenu/referalsTab/bg.png) no-repeat top -1rem center;
|
||||||
background-size: auto 57rem ;
|
background-size: auto 57rem ;
|
||||||
//border: 1px solid #fff;
|
//border: 0.05rem solid #fff;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding-top: 2rem;
|
padding-top: 2rem;
|
||||||
&-side{
|
&-side{
|
||||||
width: 26rem;
|
width: 26rem;
|
||||||
//height: 48rem;
|
//height: 48rem;
|
||||||
//border: 1px solid #fff;
|
//border: 0.05rem solid #fff;
|
||||||
}
|
}
|
||||||
&-title{
|
&-title{
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -156,7 +156,7 @@ export default {
|
|||||||
}
|
}
|
||||||
&-progress{
|
&-progress{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
//border: 1px solid #fff;
|
//border: 0.05rem solid #fff;
|
||||||
height: 32rem;
|
height: 32rem;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
|
|||||||
@@ -118,36 +118,36 @@ export default {
|
|||||||
|
|
||||||
.reports-layout {
|
.reports-layout {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 300px 1fr;
|
grid-template-columns: 15rem 1fr;
|
||||||
gap: 24px;
|
gap: 1.2rem;
|
||||||
height: 600px;
|
height: 30rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reports-info {
|
.reports-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 16px;
|
gap: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wide-btn {
|
.wide-btn {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 12px;
|
padding: 0.6rem;
|
||||||
font-size: 14px;
|
font-size: 0.7rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rating-card {
|
.rating-card {
|
||||||
.stars-container {
|
.stars-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 8px;
|
gap: 0.4rem;
|
||||||
margin-top: 12px;
|
margin-top: 0.6rem;
|
||||||
i {
|
i {
|
||||||
font-size: 24px;
|
font-size: 1.2rem;
|
||||||
color: rgba(255, 255, 255, 0.1);
|
color: rgba(255, 255, 255, 0.1);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
&.active {
|
&.active {
|
||||||
color: #ffc107;
|
color: #ffc107;
|
||||||
text-shadow: 0 0 10px rgba(255, 193, 7, 0.4);
|
text-shadow: 0 0 0.5rem rgba(255, 193, 7, 0.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,39 +157,39 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
background: rgba(0, 0, 0, 0.2);
|
background: rgba(0, 0, 0, 0.2);
|
||||||
border-radius: 16px;
|
border-radius: 0.8rem;
|
||||||
border: 1px solid var(--border-color);
|
border: 0.05rem solid var(--border-color);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.messages-container {
|
.messages-container {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 20px;
|
padding: 1rem;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 0.6rem;
|
||||||
|
|
||||||
&::-webkit-scrollbar { width: 4px; }
|
&::-webkit-scrollbar { width: 0.2rem; }
|
||||||
&::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 4px; }
|
&::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 0.2rem; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-wrapper {
|
.input-wrapper {
|
||||||
padding: 16px;
|
padding: 0.8rem;
|
||||||
background: rgba(255, 255, 255, 0.02);
|
background: rgba(255, 255, 255, 0.02);
|
||||||
border-top: 1px solid var(--border-color);
|
border-top: 0.05rem solid var(--border-color);
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 12px;
|
gap: 0.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-input {
|
.chat-input {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
background: rgba(255, 255, 255, 0.05);
|
background: rgba(255, 255, 255, 0.05);
|
||||||
border: 1px solid var(--border-color);
|
border: 0.05rem solid var(--border-color);
|
||||||
border-radius: 10px;
|
border-radius: 0.5rem;
|
||||||
padding: 12px 16px;
|
padding: 0.6rem 0.8rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 14px;
|
font-size: 0.7rem;
|
||||||
outline: none;
|
outline: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
&:focus {
|
&:focus {
|
||||||
@@ -199,9 +199,9 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.send-btn {
|
.send-btn {
|
||||||
width: 44px;
|
width: 2.2rem;
|
||||||
height: 44px;
|
height: 2.2rem;
|
||||||
border-radius: 10px;
|
border-radius: 0.5rem;
|
||||||
background: var(--primary-color);
|
background: var(--primary-color);
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@@ -212,7 +212,7 @@ export default {
|
|||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
&:hover:not(:disabled) {
|
&:hover:not(:disabled) {
|
||||||
background: var(--primary-hover);
|
background: var(--primary-hover);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-0.1rem);
|
||||||
}
|
}
|
||||||
&:disabled {
|
&:disabled {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
|
|||||||
@@ -92,10 +92,10 @@ export default {
|
|||||||
height: 3rem;
|
height: 3rem;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
line-height: 1.45rem;
|
line-height: 1.45rem;
|
||||||
border: 1px solid rgba(#000, 0);
|
border: 0.05rem solid rgba(#000, 0);
|
||||||
&-selected{
|
&-selected{
|
||||||
background: rgba(255, 255, 255, 0.05);
|
background: rgba(255, 255, 255, 0.05);
|
||||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
border: 0.05rem solid rgba(255, 255, 255, 0.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,8 +72,8 @@ import { mapState, mapGetters } from 'vuex'
|
|||||||
import InfoItem from './common/InfoItem.vue'
|
import InfoItem from './common/InfoItem.vue'
|
||||||
import ExtraItem from './common/ExtraItem.vue'
|
import ExtraItem from './common/ExtraItem.vue'
|
||||||
import ActionItem from './common/ActionItem.vue'
|
import ActionItem from './common/ActionItem.vue'
|
||||||
import TransportModal from './TransportModal.vue'
|
import TransportModal from './TransportModal'
|
||||||
import BusinessModal from './BusinessModal.vue'
|
import BusinessModal from './BusinessModal'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'StatisticsTab',
|
name: 'StatisticsTab',
|
||||||
@@ -149,7 +149,7 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: rgba(0, 0, 0, 0.6);
|
background: rgba(0, 0, 0, 0.6);
|
||||||
backdrop-filter: blur(5px);
|
backdrop-filter: blur(0.25rem);
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export default {
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: rgba(0, 0, 0, 0.8);
|
background: rgba(0, 0, 0, 0.8);
|
||||||
backdrop-filter: blur(15px);
|
backdrop-filter: blur(0.75rem);
|
||||||
z-index: 2000;
|
z-index: 2000;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -56,22 +56,22 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.danger-modal {
|
.danger-modal {
|
||||||
width: 400px;
|
width: 20rem;
|
||||||
border-color: rgba(255, 71, 71, 0.3);
|
border-color: rgba(255, 71, 71, 0.3);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.danger-icon {
|
.danger-icon {
|
||||||
font-size: 64px;
|
font-size: 3.2rem;
|
||||||
color: #ff4747;
|
color: #ff4747;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 1rem;
|
||||||
filter: drop-shadow(0 0 15px rgba(255, 71, 71, 0.3));
|
filter: drop-shadow(0 0 0.75rem rgba(255, 71, 71, 0.3));
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-subtitle {
|
.modal-subtitle {
|
||||||
font-size: 16px;
|
font-size: 0.8rem;
|
||||||
color: rgba(255, 255, 255, 0.8);
|
color: rgba(255, 255, 255, 0.8);
|
||||||
margin-bottom: 30px;
|
margin-bottom: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.danger-btn {
|
.danger-btn {
|
||||||
@@ -79,7 +79,7 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #ff6b6b;
|
background: #ff6b6b;
|
||||||
box-shadow: 0 4px 20px rgba(255, 71, 71, 0.4);
|
box-shadow: 0 0.2rem 1rem rgba(255, 71, 71, 0.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -23,7 +23,7 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
border: 0.05rem solid rgba(255, 255, 255, 0.1);
|
||||||
background: rgba(255, 255, 255, 0.1);
|
background: rgba(255, 255, 255, 0.1);
|
||||||
&::after {
|
&::after {
|
||||||
content: "";
|
content: "";
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export default {
|
|||||||
left: 50%;
|
left: 50%;
|
||||||
height: 0.1rem;
|
height: 0.1rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-shadow: 0px -1rem 2rem 0.2rem #A2BC1F;
|
box-shadow: 0 -1rem 2rem 0.2rem #A2BC1F;
|
||||||
background: #A2BC1F;
|
background: #A2BC1F;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ export default {
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: rgba(0, 0, 0, 0.7);
|
background: rgba(0, 0, 0, 0.7);
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(0.5rem);
|
||||||
z-index: 2000;
|
z-index: 2000;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -87,25 +87,25 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-window {
|
.modal-window {
|
||||||
width: 450px;
|
width: 22.5rem;
|
||||||
background: var(--bg-main);
|
background: var(--bg-main);
|
||||||
border: 1px solid var(--border-color);
|
border: 0.05rem solid var(--border-color);
|
||||||
border-radius: 20px;
|
border-radius: 1rem;
|
||||||
padding: 30px;
|
padding: 1.5rem;
|
||||||
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
|
box-shadow: 0 1.25rem 2.5rem rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-header {
|
.modal-header {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 24px;
|
margin-bottom: 1.2rem;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 0.6rem;
|
||||||
border-bottom: 1px solid var(--border-color);
|
border-bottom: 0.05rem solid var(--border-color);
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 18px;
|
font-size: 0.9rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 0.05rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,9 +113,9 @@ export default {
|
|||||||
.modal-close {
|
.modal-close {
|
||||||
background: rgba(255, 255, 255, 0.05);
|
background: rgba(255, 255, 255, 0.05);
|
||||||
border: none;
|
border: none;
|
||||||
width: 32px;
|
width: 1.6rem;
|
||||||
height: 32px;
|
height: 1.6rem;
|
||||||
border-radius: 8px;
|
border-radius: 0.4rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -129,20 +129,20 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-subtitle {
|
.modal-subtitle {
|
||||||
font-size: 14px;
|
font-size: 0.7rem;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
margin-bottom: 20px;
|
margin-bottom: 1rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-input {
|
.dialog-input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: rgba(255, 255, 255, 0.05);
|
background: rgba(255, 255, 255, 0.05);
|
||||||
border: 1px solid var(--border-color);
|
border: 0.05rem solid var(--border-color);
|
||||||
border-radius: 10px;
|
border-radius: 0.5rem;
|
||||||
padding: 12px 16px;
|
padding: 0.6rem 0.8rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 0.8rem;
|
||||||
outline: none;
|
outline: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
&:focus {
|
&:focus {
|
||||||
@@ -151,23 +151,23 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.key-display {
|
.key-display {
|
||||||
font-size: 32px;
|
font-size: 1.6rem;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 20px 0;
|
margin: 1rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-footer {
|
.dialog-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 12px;
|
gap: 0.6rem;
|
||||||
margin-top: 24px;
|
margin-top: 1.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confirm-btn, .cancel-btn {
|
.confirm-btn, .cancel-btn {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 12px;
|
padding: 0.6rem;
|
||||||
border-radius: 10px;
|
border-radius: 0.5rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -180,13 +180,13 @@ export default {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
&:hover {
|
&:hover {
|
||||||
background: var(--primary-hover);
|
background: var(--primary-hover);
|
||||||
box-shadow: 0 4px 15px rgba(109, 85, 166, 0.4);
|
box-shadow: 0 0.2rem 0.75rem rgba(109, 85, 166, 0.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cancel-btn {
|
.cancel-btn {
|
||||||
background: rgba(255, 255, 255, 0.05);
|
background: rgba(255, 255, 255, 0.05);
|
||||||
border: 1px solid var(--border-color);
|
border: 0.05rem solid var(--border-color);
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
&:hover {
|
&:hover {
|
||||||
background: rgba(255, 255, 255, 0.1);
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div class="options-menu-root">
|
||||||
<div class="app-container show">
|
<div class="app-container show">
|
||||||
<Sidebar
|
<Sidebar
|
||||||
:active-section="rightTab"
|
:active-section="rightTab"
|
||||||
@@ -32,6 +33,7 @@
|
|||||||
<Dialog v-if="dialog" :dialog="dialog" />
|
<Dialog v-if="dialog" :dialog="dialog" />
|
||||||
<CaptAttack v-if="captAttack" />
|
<CaptAttack v-if="captAttack" />
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
+275
-271
File diff suppressed because it is too large
Load Diff
@@ -31,7 +31,7 @@ import { mapActions, mapGetters, mapState } from 'vuex';
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
imgUrl: "https://play.just-rp.com/languages/",
|
imgUrl: "https://web-whistler-626.redl.app/languages/",
|
||||||
current: "ru"
|
current: "ru"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+32
-13
@@ -5,7 +5,7 @@
|
|||||||
Ничего устанавливать руками не нужно:
|
Ничего устанавливать руками не нужно:
|
||||||
1. Зайди на **[redl.io](https://redl.io)** и закажи игровой сервер или VDS (подойдёт конфиг от 2 CPU / 4 ГБ RAM).
|
1. Зайди на **[redl.io](https://redl.io)** и закажи игровой сервер или VDS (подойдёт конфиг от 2 CPU / 4 ГБ RAM).
|
||||||
2. Открой чат ИИ-агента в панели и напиши:
|
2. Открой чат ИИ-агента в панели и напиши:
|
||||||
> «Разверни мод Whistler из репозитория https://git-1.redl.app/1themotiv/whistler — базы, сборку, конфиги и сервис локализации сделай сам»
|
> «Разверни мод Whistler из репозитория https://git-1.redl.app/robimobi/whistler — базы, сборку, конфиги и сервис локализации сделай сам»
|
||||||
3. Агент сам поставит .NET, MySQL и RAGE:MP, зальёт схемы баз, соберёт мод, поднимет сервис локализации и отдаст готовый адрес сервера. Любые доработки дальше — тоже словами в чат.
|
3. Агент сам поставит .NET, MySQL и RAGE:MP, зальёт схемы баз, соберёт мод, поднимет сервис локализации и отдаст готовый адрес сервера. Любые доработки дальше — тоже словами в чат.
|
||||||
|
|
||||||
## Способ 2 — вручную
|
## Способ 2 — вручную
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| RAGE:MP Server | актуальный (линукс `linux_x64.tar.gz` / виндовс updater) | сама платформа мультиплеера |
|
| RAGE:MP Server | актуальный (линукс `linux_x64.tar.gz` / виндовс updater) | сама платформа мультиплеера |
|
||||||
| .NET Core SDK | **3.1** (мод собран под netcoreapp3.1) | сборка/запуск серверной логики C# |
|
| .NET Core SDK | **3.1** (мод собран под netcoreapp3.1) | сборка/запуск серверной логики C# |
|
||||||
| MySQL / MariaDB | 8.0+ / 10.5+ | две базы (главная + банковская) |
|
| MySQL / MariaDB | 8.0+ / 10.5+ | четыре базы (главная, логи, core, банковская) |
|
||||||
| Node.js | 14–16 LTS | сборка GUI (webpack) и сервис локализации |
|
| Node.js | 14–16 LTS | сборка GUI (webpack) и сервис локализации |
|
||||||
| Git | любой | клонирование репозитория |
|
| Git | любой | клонирование репозитория |
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ apt install -y dotnet-sdk-3.1 || snap install dotnet-sdk --classic --channel=3.1
|
|||||||
|
|
||||||
### 2. Базы данных
|
### 2. Базы данных
|
||||||
```bash
|
```bash
|
||||||
git clone https://git-1.redl.app/1themotiv/whistler.git /opt/whistler
|
git clone https://git-1.redl.app/robimobi/whistler.git /opt/whistler
|
||||||
cd /opt/whistler
|
cd /opt/whistler
|
||||||
mysql -e "CREATE DATABASE whistler_main CHARACTER SET utf8mb4; CREATE DATABASE whistler_mainlogs CHARACTER SET utf8mb4; CREATE DATABASE whistler_maincore CHARACTER SET utf8mb4; CREATE DATABASE whistler CHARACTER SET utf8mb4;"
|
mysql -e "CREATE DATABASE whistler_main CHARACTER SET utf8mb4; CREATE DATABASE whistler_mainlogs CHARACTER SET utf8mb4; CREATE DATABASE whistler_maincore CHARACTER SET utf8mb4; CREATE DATABASE whistler CHARACTER SET utf8mb4;"
|
||||||
mysql -e "CREATE USER 'whistler'@'localhost' IDENTIFIED BY 'ПРИДУМАЙ_ПАРОЛЬ'; GRANT ALL ON `whistler_main%`.* TO 'whistler'@'localhost'; GRANT ALL ON whistler.* TO 'whistler'@'localhost';"
|
mysql -e "CREATE USER 'whistler'@'localhost' IDENTIFIED BY 'ПРИДУМАЙ_ПАРОЛЬ'; GRANT ALL ON `whistler_main%`.* TO 'whistler'@'localhost'; GRANT ALL ON whistler.* TO 'whistler'@'localhost';"
|
||||||
@@ -64,6 +64,8 @@ mysql whistler < db/whistler_bank.schema.sql
|
|||||||
mysql whistler < db/bank_migrations.sql
|
mysql whistler < db/bank_migrations.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> На машине с 2 ГБ RAM дополнительно ужмите MariaDB: `cp deploy/config/99-lowmem.cnf /etc/mysql/mariadb.conf.d/ && systemctl restart mariadb`
|
||||||
|
|
||||||
### 3. RAGE:MP сервер
|
### 3. RAGE:MP сервер
|
||||||
```bash
|
```bash
|
||||||
mkdir -p /opt/ragemp && cd /opt/ragemp
|
mkdir -p /opt/ragemp && cd /opt/ragemp
|
||||||
@@ -88,17 +90,29 @@ dotnet build Whistler.sln -c Release
|
|||||||
ln -s /opt/whistler/dotnet /opt/ragemp/dotnet
|
ln -s /opt/whistler/dotnet /opt/ragemp/dotnet
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Важно для Linux (проверено на реальном развёртывании):**
|
||||||
|
- Линуксовый мост RAGE:MP **молча не грузит ресурс**, пока он не объявлен в `dotnet/settings.xml` рядом с рантаймом: скопируйте `deploy/config/settings.xml` (внутри `<resource src="Whistler" />`).
|
||||||
|
- `settings.json` кладётся рядом с `ragemp-server` (шаблон — `settings.example.json` в корне репо), про мост и ICU — см. «Три вещи» выше.
|
||||||
|
|
||||||
### 6. Клиентская часть
|
### 6. Клиентская часть
|
||||||
```bash
|
```bash
|
||||||
ln -s /opt/whistler/client_packages /opt/ragemp/client_packages
|
ln -s /opt/whistler/client_packages /opt/ragemp/client_packages
|
||||||
# GUI уже собран (client_packages/gui). Пересобрать после правок:
|
# GUI уже собран (client_packages/gui — свежая сборка со всеми фиксами шрифтов и экранов).
|
||||||
cd /opt/whistler/Gui && npm ci && npm run build
|
```
|
||||||
|
|
||||||
|
Пересборка GUI после своих правок (Node 18/20):
|
||||||
|
```bash
|
||||||
|
cd /opt/whistler/Gui
|
||||||
|
npm ci --legacy-peer-deps # в lock-файле есть конфликты peer deps
|
||||||
|
NODE_OPTIONS=--openssl-legacy-provider npm run build # старый webpack на новом Node
|
||||||
```
|
```
|
||||||
|
|
||||||
### 7. Запуск
|
### 7. Запуск
|
||||||
```bash
|
```bash
|
||||||
cd /opt/ragemp && ./ragemp-server
|
cd /opt/ragemp && ./ragemp-server
|
||||||
# в проде: под systemd/screen; лог смотри в server.out
|
# в проде — под systemd: готовые юниты в deploy/systemd/
|
||||||
|
cp /opt/whistler/deploy/systemd/*.service /etc/systemd/system/
|
||||||
|
systemctl daemon-reload && systemctl enable --now whistler-api ragemp
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -114,7 +128,7 @@ cd /opt/ragemp && ./ragemp-server
|
|||||||
|
|
||||||
### 2. Клонировать и развернуть базы (PowerShell)
|
### 2. Клонировать и развернуть базы (PowerShell)
|
||||||
```powershell
|
```powershell
|
||||||
git clone https://git-1.redl.app/1themotiv/whistler.git C:\whistler
|
git clone https://git-1.redl.app/robimobi/whistler.git C:\whistler
|
||||||
cd C:\whistler
|
cd C:\whistler
|
||||||
& "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -uroot -p -e "CREATE DATABASE whistler_main CHARACTER SET utf8mb4; CREATE DATABASE whistler_mainlogs CHARACTER SET utf8mb4; CREATE DATABASE whistler_maincore CHARACTER SET utf8mb4; CREATE DATABASE whistler CHARACTER SET utf8mb4;"
|
& "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -uroot -p -e "CREATE DATABASE whistler_main CHARACTER SET utf8mb4; CREATE DATABASE whistler_mainlogs CHARACTER SET utf8mb4; CREATE DATABASE whistler_maincore CHARACTER SET utf8mb4; CREATE DATABASE whistler CHARACTER SET utf8mb4;"
|
||||||
Get-Content db\whistler_core.schema.sql | & "...\mysql.exe" -uroot -p whistler_main
|
Get-Content db\whistler_core.schema.sql | & "...\mysql.exe" -uroot -p whistler_main
|
||||||
@@ -155,12 +169,13 @@ node index.js # слушает 127.0.0.1:62333
|
|||||||
# проверка: curl http://127.0.0.1:62333/api/localize/ru → JSON словаря
|
# проверка: curl http://127.0.0.1:62333/api/localize/ru → JSON словаря
|
||||||
```
|
```
|
||||||
|
|
||||||
**Подключение к GUI**: адрес прошит в `Gui/src/store/localization/index.js`:
|
**Подключение к GUI**: адреса прошиты в исходниках. Сейчас они указывают на живой демо-домен `web-whistler-626.redl.app` (работает — можно сразу тестировать), для своего сервера замените на свой домен в 4 файлах:
|
||||||
```js
|
- `Gui/src/store/localization/index.js` — `apiURL`, `listUrl` (словари)
|
||||||
apiURL: "https://play.just-rp.com/api/localize/", // ← замени на свой, напр. http://ТВОЙ_IP:62333/api/localize/
|
- `Gui/src/store/sounds/index.js` — хост звуков
|
||||||
listUrl: "https://play.just-rp.com/api/localize/list",
|
- `Gui/src/views/SelectLanguage/index.vue` — картинки флагов
|
||||||
```
|
- `Gui/src/views/AnimationsMenu/components/AnimationsList.vue` — превью анимаций
|
||||||
После замены пересобери GUI (`cd Gui && npm run build`). В проде повесь api за nginx/caddy с HTTPS и открой порт наружу (или проксируй с того же домена). Автозапуск: `pm2 start index.js --name whistler-api` (Linux) / NSSM или Планировщик задач (Windows).
|
|
||||||
|
После замены пересоберите GUI (см. шаг 6). В проде повесьте api за Caddy/nginx с HTTPS (готовый пример — `deploy/config/Caddyfile.example`, он же раздаёт веб-превью интерфейса). Автозапуск — юнит `deploy/systemd/whistler-api.service`.
|
||||||
|
|
||||||
## Первый вход в игру
|
## Первый вход в игру
|
||||||
|
|
||||||
@@ -178,10 +193,14 @@ listUrl: "https://play.just-rp.com/api/localize/list",
|
|||||||
|---|---|
|
|---|---|
|
||||||
| Сервер падает на старте с ошибкой БД | строки подключения в `settings.json` (лежит РЯДОМ с ragemp-server, не в репо) |
|
| Сервер падает на старте с ошибкой БД | строки подключения в `settings.json` (лежит РЯДОМ с ragemp-server, не в репо) |
|
||||||
| «мод пытается накатить миграции и падает» | не залит `db/*_migrations.sql` (история EF) |
|
| «мод пытается накатить миграции и падает» | не залит `db/*_migrations.sql` (история EF) |
|
||||||
|
| Linux: сервер стартует, но ресурс Whistler не грузится | нет `dotnet/settings.xml` с `<resource src="Whistler"/>` — мост молчит без ошибок |
|
||||||
| Экраны показывают `AUTH:LOGIN:...` вместо текста | не запущен/не прописан сервис локализации (см. выше) |
|
| Экраны показывают `AUTH:LOGIN:...` вместо текста | не запущен/не прописан сервис локализации (см. выше) |
|
||||||
| GUI не изменился после правок | пересобери `Gui` (`npm run build`) — клиент берёт бандл из `client_packages/gui` |
|
| GUI не изменился после правок | пересобери `Gui` (`npm run build`) — клиент берёт бандл из `client_packages/gui` |
|
||||||
| Ошибка Table '...logs.itemslog' doesn't exist | логовая база не создана или названа не как главная+logs |
|
| Ошибка Table '...logs.itemslog' doesn't exist | логовая база не создана или названа не как главная+logs |
|
||||||
|
| В игре интерфейс «разъехался» / старый | битый кэш клиента: удалить папку `client_resources` в папке RAGE:MP и перезайти |
|
||||||
|
| Тексты интерфейса «слипаются», не тот шрифт | старая сборка GUI: возьмите свежий `client_packages/gui` из этого репо (шрифты и кегли исправлены) |
|
||||||
| dotnet build ругается на версию | нужен именно SDK **3.1** (`dotnet --list-sdks`) |
|
| dotnet build ругается на версию | нужен именно SDK **3.1** (`dotnet --list-sdks`) |
|
||||||
|
| npm ci падает по peer deps / сборка по OpenSSL | `npm ci --legacy-peer-deps` и `NODE_OPTIONS=--openssl-legacy-provider` (см. шаг 6) |
|
||||||
|
|
||||||
---
|
---
|
||||||
<p align="center">Powered by <a href="https://redl.io"><b>REDL.IO</b></a> — AI Game Hosting: сервер + ИИ-агент, который устанавливает моды за тебя</p>
|
<p align="center">Powered by <a href="https://redl.io"><b>REDL.IO</b></a> — AI Game Hosting: сервер + ИИ-агент, который устанавливает моды за тебя</p>
|
||||||
|
|||||||
@@ -86,6 +86,27 @@ db/ — ЧИСТЫЕ схемы обеих баз MySQL + истор
|
|||||||
|
|
||||||
Полный набор — в `docs/screenshots/`.
|
Полный набор — в `docs/screenshots/`.
|
||||||
|
|
||||||
|
## Обновление 2026-08 — рабочая сборка ✅
|
||||||
|
|
||||||
|
Проект доведён до состояния «клонировал → развернул → играешь» (проверено живым развёртыванием на VDS):
|
||||||
|
|
||||||
|
**Восстановлено недостающее** (без этого проект не собирался/не запускался):
|
||||||
|
- Конфиги GUI, которые авторы прятали в `.gitignore`: `newDonateShop/{items,roulette,coinkits,rarityPrices,primeAccount}.js`, `gameMakeWeapon/{levels,guns}.js`, `gameMetalPlant/levels.js` — добавлены рабочие версии, `.gitignore` почищен.
|
||||||
|
- База игровых логов (19 таблиц) — схемы не было в дампах, восстановлена из кода: `db/whistler_logs.schema.sql` (копия — `deploy/sql/`); именование баз — см. INSTALL.md.
|
||||||
|
- Шрифты: в репо не было ни одного `@font-face` для семейств, которые требует дизайн (`Russian`, `Qanelas`, `Bebas Neue Pro`…) — интерфейс рендерился Times New Roman и разъезжался. Добавлены Inter/Oswald/Noto и алиасы в `Gui/public/fonts/font.css`. Для кириллических заголовков — **Oswald** (у Bebas Neue кириллицы нет).
|
||||||
|
- Починен импорт `TransportModal`/`BusinessModal` в статистике (сборка падала).
|
||||||
|
|
||||||
|
**Исправлено**:
|
||||||
|
- Экраны Auth (вход/регистрация/восстановление/приветствие): узкий дисплейный шрифт, размеры и отступы — текст больше не наезжает на формы.
|
||||||
|
- Дев-панель выбора экранов показывается только в dev-режиме (в игре её больше нет).
|
||||||
|
- `*.csproj`: PostBuild-шаги (`xcopy`) выполняются только на Windows — на Linux сборка больше не падает.
|
||||||
|
- `client_packages/gui` — свежая сборка со всеми фиксами (можно не пересобирать).
|
||||||
|
|
||||||
|
**Добавлено для развёртывания** — папка `deploy/`:
|
||||||
|
- `systemd/` — юниты `ragemp.service` и `whistler-api.service`
|
||||||
|
- `config/` — `conf.json`, `settings.xml` (обязателен для линуксового моста!), `Caddyfile.example`, `99-lowmem.cnf` для машин с 2 ГБ RAM
|
||||||
|
- `sql/` — схема базы логов
|
||||||
|
|
||||||
## Как запустить
|
## Как запустить
|
||||||
|
|
||||||
**Полная пошаговая инструкция (Linux + Windows + сервис локализации): [INSTALL.md](INSTALL.md).** Кратко:
|
**Полная пошаговая инструкция (Linux + Windows + сервис локализации): [INSTALL.md](INSTALL.md).** Кратко:
|
||||||
|
|||||||
+1
-7736
File diff suppressed because one or more lines are too long
+1
-7525
File diff suppressed because one or more lines are too long
+1
-7736
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
.range-slider{display:inline-block;padding:0 10px;height:20px;width:130px}.range-slider.disabled{opacity:.5}.range-slider-inner{display:inline-block;position:relative;height:100%;width:100%}.range-slider-fill,.range-slider-rail{display:block;position:absolute;top:50%;left:0;height:4px;border-radius:2px;transform:translateY(-50%)}.range-slider-rail{width:100%;background-color:#e2e2e2}.range-slider-fill{background-color:#21fb92}.range-slider-knob{display:block;position:absolute;top:50%;left:0;box-sizing:border-box;height:20px;width:20px;border:1px solid #f5f5f5;border-radius:50%;background-color:#fff;box-shadow:1px 1px rgba(0,0,0,.2);transform:translate(-50%,-50%);cursor:pointer}.range-slider-hidden{display:none}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{border:none;background-color:transparent;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;pointer-events:none;display:block;overflow:hidden}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -422,3 +422,8 @@
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-400.ttf') format('truetype'); font-weight: 400; font-style: normal; }
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-500.ttf') format('truetype'); font-weight: 500; font-style: normal; }
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-600.ttf') format('truetype'); font-weight: 600; font-style: normal; }
|
||||||
|
@font-face { font-family: 'Oswald'; src: url('Oswald-700.ttf') format('truetype'); font-weight: 700; font-style: normal; }
|
||||||
|
|||||||
@@ -1,14 +1 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html><html lang=ru><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=stylesheet href=./fonts/font.css><link href=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css rel=stylesheet><title></title><link href=/css/app.css rel=preload as=style><link href=/css/chunk-vendors.css rel=preload as=style><link href=/js/app.js rel=preload as=script><link href=/js/chunk-vendors.js rel=preload as=script><link href=/css/chunk-vendors.css rel=stylesheet><link href=/css/app.css rel=stylesheet></head><body><div id=app></div><script src=/js/chunk-vendors.js></script><script src=/js/app.js></script></body></html>
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
||||||
<link rel="stylesheet" href="./fonts/font.css">
|
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
|
||||||
<title></title>
|
|
||||||
<link href="/js/app.js" rel="preload" as="script"><link href="/js/chunk-vendors.js" rel="preload" as="script"></head>
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
<script type="text/javascript" src="/js/chunk-vendors.js"></script><script type="text/javascript" src="/js/app.js"></script></body>
|
|
||||||
</html>
|
|
||||||
+1
-75117
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
|||||||
|
# MariaDB для машин с 2GB RAM — положить в /etc/mysql/mariadb.conf.d/
|
||||||
|
[mysqld]
|
||||||
|
innodb_buffer_pool_size = 64M
|
||||||
|
key_buffer_size = 8M
|
||||||
|
max_connections = 40
|
||||||
|
performance_schema = OFF
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Веб-превью GUI + проксирование API локализации (опционально).
|
||||||
|
# Замените домен на свой. Порт 80 должен быть открыт — через него Caddy получает сертификат.
|
||||||
|
your-domain.example.com {
|
||||||
|
encode gzip
|
||||||
|
handle /api/localize/* {
|
||||||
|
reverse_proxy 127.0.0.1:62333
|
||||||
|
}
|
||||||
|
handle {
|
||||||
|
root * /opt/whistler-web
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"language": "ru",
|
||||||
|
"maxplayers": 100,
|
||||||
|
"name": "MY SERVER",
|
||||||
|
"stream-distance": 300,
|
||||||
|
"announce": false,
|
||||||
|
"csharp": "enabled",
|
||||||
|
"port": 22005,
|
||||||
|
"voice-chat": true,
|
||||||
|
"voice-chat-sample-rate": 48000,
|
||||||
|
"http-threads": 16,
|
||||||
|
|
||||||
|
"api-threading-debugging": false,
|
||||||
|
"server-side-weapons-only-mode": true,
|
||||||
|
"allow-cef-debugging": false
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<resource src="Whistler" />
|
||||||
|
<acl_enabled>true</acl_enabled>
|
||||||
|
<log_console>true</log_console>
|
||||||
|
<log_chat>true</log_chat>
|
||||||
|
</config>
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
/*M!999999\- enable the sandbox mode */
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
DROP TABLE IF EXISTS `adminlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `adminlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`admin` text DEFAULT NULL,
|
||||||
|
`action` text DEFAULT NULL,
|
||||||
|
`player` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `arrestlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `arrestlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`player` text DEFAULT NULL,
|
||||||
|
`target` text DEFAULT NULL,
|
||||||
|
`reason` text DEFAULT NULL,
|
||||||
|
`stars` text DEFAULT NULL,
|
||||||
|
`pnick` text DEFAULT NULL,
|
||||||
|
`tnick` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `banlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `banlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`admin` text DEFAULT NULL,
|
||||||
|
`player` text DEFAULT NULL,
|
||||||
|
`until` text DEFAULT NULL,
|
||||||
|
`reason` text DEFAULT NULL,
|
||||||
|
`ishard` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `boxlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `boxlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`boxId` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`item` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `casinologs`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `casinologs` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`operation` text DEFAULT NULL,
|
||||||
|
`money` text DEFAULT NULL,
|
||||||
|
`playername` text DEFAULT NULL,
|
||||||
|
`datetime` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `chatlogs`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `chatlogs` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`typechat` text DEFAULT NULL,
|
||||||
|
`message` text DEFAULT NULL,
|
||||||
|
`datetime` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `connlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `connlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`in` text DEFAULT NULL,
|
||||||
|
`out` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`sclub` text DEFAULT NULL,
|
||||||
|
`hwid` text DEFAULT NULL,
|
||||||
|
`ip` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `deletelog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `deletelog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`name` text DEFAULT NULL,
|
||||||
|
`account` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `donateroulettelog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `donateroulettelog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`name` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`droprarity` text DEFAULT NULL,
|
||||||
|
`droptype` text DEFAULT NULL,
|
||||||
|
`dropvalue` text DEFAULT NULL,
|
||||||
|
`isfree` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `donateshoplog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `donateshoplog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`price` text DEFAULT NULL,
|
||||||
|
`typeproduct` text DEFAULT NULL,
|
||||||
|
`product` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `fractionmoney`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `fractionmoney` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`fractionId` text DEFAULT NULL,
|
||||||
|
`operation` text DEFAULT NULL,
|
||||||
|
`sum` text DEFAULT NULL,
|
||||||
|
`date` text DEFAULT NULL,
|
||||||
|
`description` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `idlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `idlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`in` text DEFAULT NULL,
|
||||||
|
`out` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`id` text DEFAULT NULL,
|
||||||
|
`name` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `itemslog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `itemslog` (
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`id` bigint(20) NOT NULL DEFAULT 0,
|
||||||
|
`from` text DEFAULT NULL,
|
||||||
|
`to` text DEFAULT NULL,
|
||||||
|
`type` text DEFAULT NULL,
|
||||||
|
`amount` text DEFAULT NULL,
|
||||||
|
`data` text DEFAULT NULL,
|
||||||
|
`action` text DEFAULT NULL,
|
||||||
|
`player` text DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `killog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `killog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`killer` text DEFAULT NULL,
|
||||||
|
`target` text DEFAULT NULL,
|
||||||
|
`clientweapon` text DEFAULT NULL,
|
||||||
|
`serverweapon` text DEFAULT NULL,
|
||||||
|
`distance` text DEFAULT NULL,
|
||||||
|
`date` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `moneylog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `moneylog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`from` text DEFAULT NULL,
|
||||||
|
`to` text DEFAULT NULL,
|
||||||
|
`amount` text DEFAULT NULL,
|
||||||
|
`comment` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `namelog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `namelog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`uuid` text DEFAULT NULL,
|
||||||
|
`old` text DEFAULT NULL,
|
||||||
|
`new` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `newmoneylog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `newmoneylog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`fromtype` text DEFAULT NULL,
|
||||||
|
`from` text DEFAULT NULL,
|
||||||
|
`totype` text DEFAULT NULL,
|
||||||
|
`to` text DEFAULT NULL,
|
||||||
|
`amount` text DEFAULT NULL,
|
||||||
|
`tax` text DEFAULT NULL,
|
||||||
|
`comment` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `ticketlog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `ticketlog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
`player` text DEFAULT NULL,
|
||||||
|
`target` text DEFAULT NULL,
|
||||||
|
`sum` text DEFAULT NULL,
|
||||||
|
`reason` text DEFAULT NULL,
|
||||||
|
`pnick` text DEFAULT NULL,
|
||||||
|
`tnick` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
DROP TABLE IF EXISTS `votelog`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `votelog` (
|
||||||
|
`_rid` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`election` text DEFAULT NULL,
|
||||||
|
`login` text DEFAULT NULL,
|
||||||
|
`votefor` text DEFAULT NULL,
|
||||||
|
`time` text DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`_rid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=RAGE:MP server (Whistler)
|
||||||
|
After=network.target mariadb.service whistler-api.service
|
||||||
|
Wants=mariadb.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
WorkingDirectory=/opt/ragemp
|
||||||
|
ExecStart=/opt/ragemp/ragemp-server
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
LimitNOFILE=65535
|
||||||
|
Environment=DOTNET_ROOT=/usr/share/dotnet
|
||||||
|
Environment=DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Whistler localization API
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
WorkingDirectory=/opt/whistler/api
|
||||||
|
ExecStart=/usr/bin/node /opt/whistler/api/index.js
|
||||||
|
Restart=always
|
||||||
|
RestartSec=3
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -5,6 +5,6 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
<Exec Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y" />
|
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -5,6 +5,6 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
<Exec Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y
" />
|
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y
" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
<Exec Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y
" />
|
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y
" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
<Exec Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y
" />
|
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="xcopy "$(OutDir)*.dll" "\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "\Whistler\*.*" /Q /D /Y
" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
<Exec Command="xcopy "$(OutDir)*.dll" "..\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "..\Whistler\*.*" /Q /D /Y
xcopy "meta.xml" "..\Whistler\*.*" /Q /D /Y
xcopy "..\Whistler\*" "..\Whistler\*.*" /Q /D /Y" />
|
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="xcopy "$(OutDir)*.dll" "..\Whistler\*.*" /Q /D /Y
xcopy "$(OutDir)*.pdb" "..\Whistler\*.*" /Q /D /Y
xcopy "meta.xml" "..\Whistler\*.*" /Q /D /Y
xcopy "..\Whistler\*" "..\Whistler\*.*" /Q /D /Y" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<ProjectExtensions><VisualStudio><UserProperties /></VisualStudio></ProjectExtensions>
|
<ProjectExtensions><VisualStudio><UserProperties /></VisualStudio></ProjectExtensions>
|
||||||
|
|||||||
Reference in New Issue
Block a user