ВИДЕО МАНУАЛ
Описание: Игрок получает задание от Харри после чего едет к Нику и там решает мат. задания после чего обратно возвращается к Харри и получает свой приз.
Серверная часть: kwest_SV > index.js
Клиентская часть: CLkwest > index.js
index.html
NickBrowser.html
style.css
Описание: Игрок получает задание от Харри после чего едет к Нику и там решает мат. задания после чего обратно возвращается к Харри и получает свой приз.
Серверная часть: kwest_SV > index.js
JavaScript:
let colshapeOfBrowser = mp.colshapes.newRectangle(-1644.35, -995.62, 1.5, 1.5);
let DBHANDLE = require("../dbconnection.js")
//FACTS
/// marker
mp.markers.new(1, new mp.Vector3(-1644.35, -995.62, 12.01), 1.2, {
"color": [0, 255, 0, 150],
"dimension": 0
})
/// ped
mp.peds.new(
mp.joaat('s_m_m_dockwork_01'),
[-1649.72, -997.56, 13.01, 1],
{
dynamic: false,
frozen: true,
invincible: true
}
);
mp.events.add("playerEnterColshape", (player, colshape) => {
if(colshapeOfBrowser == colshape){
let UID = player.getVariable("UserID")
DBHANDLE.connection.query("SELECT * FROM accounts WHERE ID = ?",[UID], function(error, results){
if(results[0].EVENT_WAS == "0"){
player.call("ShowEventBrowser")
}
else if(results[0].EVENT_WAS == "3"){
player.call("ClassicNotify", ["Ты уже проходил этот квест"])
}
else{
player.call("ClassicNotify", ["Молодец, держи 15000$"])
let bf = player.getVariable('cash');
let af = 15000;
let equa = Number(bf) + Number(af);
player.setVariable('cash', equa);
mp.events.call("SET_DONE_EVENT_NICK", UID)
}
})
}
})
mp.events.add("playerExitColshape", (player, colshape) => {
if(colshapeOfBrowser == colshape){
player.call("HideEventBrowser")
}
})
mp.events.add("EVENT_startDBwaiting", (player) => {
let UID = player.getVariable("UserID")
DBHANDLE.connection.query("SELECT * FROM accounts WHERE ID = ?",[UID], function(error, results){
})
})
//Nick
let colshapeOfNick = mp.colshapes.newRectangle(-1623, -992.14, 1.5, 1.5);
mp.markers.new(1, new mp.Vector3(-1623, -992.14, 12), 1.2, {
"color": [0, 255, 0, 150],
"dimension": 0
})
mp.events.add("playerEnterColshape", (player, colshape) => {
if(colshapeOfNick == colshape){
let UID = player.getVariable("UserID")
DBHANDLE.connection.query("SELECT * FROM accounts WHERE ID = ?",[UID], function(error, results){
if(results[0].EVENT_WAS == "2"){
player.call("ShowNickEVENTBrowser")
}else{
player.call("ClassicNotify", ["Мне кажется мы знакомы с тобой"])
}
})
}
})
mp.events.add("setDoneZadanie", (player) => {
let UID = player.getVariable("UserID")
DBHANDLE.connection.query("UPDATE accounts SET EVENT_WAS = ? WHERE ID = ?",[1 ,UID], function(error, results){
})
})
mp.events.add("SETdbPD_EVENT_NICK", (player) => {
let UID = player.getVariable("UserID")
DBHANDLE.connection.query("UPDATE accounts SET EVENT_WAS = ? WHERE ID = ?",[2,UID], function(error, results){
})
})
mp.events.add("SET_DONE_EVENT_NICK", (UID) => {
DBHANDLE.connection.query("UPDATE accounts SET EVENT_WAS = ? WHERE ID = ?",[3 ,UID], function(error, results){
})
})
Клиентская часть: CLkwest > index.js
JavaScript:
let browser = null;
mp.events.add("ShowEventBrowser", () => {
if(browser == null){
browser = mp.browsers.new("package://CLkwest/index.html");
browser.execute("mp.invoke('focus', true)");
mp.game.ui.displayHud(false);
mp.gui.chat.activate(false);
mp.gui.cursor.show(true, true);
}
})
mp.events.add("HideEventBrowser", () => {
if(browser != null){
mp.game.ui.displayHud(true);
mp.gui.chat.activate(true);
mp.gui.cursor.show(false, false);
browser.destroy();
browser = null;
}
})
mp.events.add("StartEventForPlayer", () => {
mp.events.call("HideEventBrowser");
mp.events.call("ClassicNotify", "Езжай к Нику в район Burton, на месте договоритесь.");
mp.events.callRemote("SETdbPD_EVENT_NICK")
})
//Nick
let browserNick = null;
let selectArray = [
{
Quest: "25 + 25",
Ans: 50,
},
{
Quest: "15 + 25",
Ans: 40,
},
]
let randomQST
mp.events.add("ShowNickEVENTBrowser", () => {
randomQST = selectArray[Math.floor(Math.random()*selectArray.length)];
if(browserNick == null){
browserNick = mp.browsers.new("package://CLkwest/NickBrowser.html");
browserNick.execute(`setPrimer("${randomQST.Quest}")`);
mp.game.ui.displayHud(false);
mp.gui.chat.activate(false);
mp.gui.cursor.show(true, true);
}
})
mp.events.add("HideNickEVENTBrowser", () => {
if(browserNick != null){
mp.game.ui.displayHud(true);
mp.gui.chat.activate(true);
mp.gui.cursor.show(false, false);
browserNick.destroy();
browserNick = null;
}
})
mp.events.add("VL", (inputed) => {
if(/[a-zA-Z]/.test(inputed)){
mp.events.call("ClassicNotify", "Можно использовать только цифры, буквы запрещены.")
}else{
if(randomQST.Ans == inputed){
mp.events.call("ClassicNotify", "Молодец, езжай к Харри на пирс")
mp.events.callRemote("setDoneZadanie")
}else{
mp.events.call("ClassicNotify", "Кажется твой ответ не правильный, попробуй взять другое задание.")
}
}
})
index.html
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css">
<script src="index.js"></script>
</head>
<body>
<div class="BTN1" onclick="StartEVENT()">Начать</div>
<div class="BTN2">Отказаться</div>
</body>
<script>
function StartEVENT(){
mp.trigger("StartEventForPlayer")
}
</script>
</html>
NickBrowser.html
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css">
<script src="index.js"></script>
</head>
<body>
<div class="Cont">
<div class="TextZAGL">Привет, ты наверное от Харри. Реши математический пример после чего получишь вознаграждение от Харри.</div>
<div class="Primer" id="Primer">2+2 = ?</div>
<div class="PoleVVoda" contenteditable="true" id="PoleVVoda">
</div>
<div class="BTNDecline" onclick="DECLINEfunc()">Decline</div>
<div class="BTNAccept" onclick="Acceptfunc()">Accept</div>
</div>
</body>
<script>
function setPrimer(setTEKST){
document.getElementById("Primer").textContent = setTEKST;
}
function DECLINEfunc(){
mp.trigger("HideNickEVENTBrowser")
}
function Acceptfunc(){
let inputed = document.getElementById("PoleVVoda").textContent;
mp.trigger("VL", inputed)
mp.trigger("HideNickEVENTBrowser")
}
</script>
</html>
style.css
CSS:
new-color-palette {background: #d97884;}
new-color-palette {background: #557cd2;}
new-color-palette {background: #eab743;}
new-color-palette {background: #272d2e;}
new-color-palette {background: #dbd2c4;}
new-color-palette {background:#DBD2C4}
new-color-palette {background:#4E4637}
new-color-palette {background:#BCA987}
body {
margin: 0;
padding: 0;
user-select: none;
/*
background-size: cover;
background-image: url(./NgAsb1b_ygVzrpVRhUTKR4TAE1DPr8XS1eC4FKjKiRk.webp);
*/
}
@font-face {
font-family: PTL;
src: url(./FONTS/PTC55F.ttf);
}
@font-face {
font-family: PTB;
src: url(./FONTS/PTC75F.ttf);
}
.BTN1{
color: green;
}
.BTN2{
color: red;
}
/*
-
--
---Nick
--
-
*/
.Cont{
position: fixed;
width: 50vw;
height: 50vh;
top: 25vh;
left: 25vw;
background-color: #0076B7;
border-radius: 20px;
color: #FFFFFF;
}
.TextZAGL{
text-align: center;
position: relative;
font-family: PTL;
font-size: 125%;
width: 90%;
left: 5%;
}
.Primer{
text-align: center;
position: relative;
font-family: PTB;
font-size: 250%;
width: 90%;
left: 5%;
}
.PoleVVoda{
position: relative;
background-color: #009FBA;
width: 80%;
height: 25%;
top: 5%;
left: 10%;
}
.BTNDecline{
position: relative;
background-color: #272d2e;
width: 25%;
height: 15%;
top: 20%;
left: 12.5%;
color: #DBD2C4;
font-family: PTL;
font-size: 125%;
}
.BTNAccept{
position: relative;
background-color: #272d2e;
width: 25%;
height: 15%;
top: 5%;
left: 62.5%;
color: #DBD2C4;
font-family: PTL;
font-size: 125%;
}
Последнее редактирование: