Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Project: The Vita Village
- File: main.js
- Author(s): Sebihunter
- */
- /*
- INFOS:
- http://gtaforums.com/topic/794014-fonts-list/
- http://www.gtamodding.com/wiki/Blip_Sprite_IDs
- http://www.nextgenupdate.com/forums/grand-theft-auto-v-modding/725735-full-npcs-ped-models-characters-list-case-you-need-p.html
- */
- /*
- TODOOOOOOOO: Remove pdata, vdata etc. when an element is deleted
- */
- //Don't let my node crash :'(
- process.on('uncaughtException', function (err) {
- console.log(err)
- })
- var mysql = require('mysql'); //require this with 'npm install mysql' in io.js
- var request = require('request') //require this with 'npm install request' in io.js
- //Initialize other scripts
- global.log = require("./utils/log.js");
- global.utils = require("./utils/utils.js");
- global.vehicles = require("./vehicles.js");
- global.gasstations = require("./gasstations.js")
- global.weapons = require("./weapons.js");
- global.weather = require("./weather.js");
- global.items = require("./items.js")
- global.chat = require("./chat.js")
- global.gang = require("./gang.js")
- global.bank = require("./bank.js")
- global.jobs = require("./jobs/jobs.js")
- global.reporter = require("./jobs/reporter.js")
- global.minijobs = {}
- global.minijobs.news = require("./jobs/minijobs/zeitungsjunge.js")
- global.logs = {}
- global.logs.main = global.log.newLog("main")
- global.pdata = []
- global.vdata = []
- global.pidata = []
- global.cpdata = []
- //var tdata = []
- global.connection = mysql.createConnection({
- host: '127.0.0.1',
- user: 'root',
- password: '',
- database: 'vita_v'
- });
- var serverBlips = [
- { name : "Bank", blip : 108, vec : [-111.17375183105469,6470.107421875,30.62672233581543], color : 2 },
- { name : "AutoHus", blip : 225, vec : [-243.68368530273438,6208.9326171875,30.93905258178711], color : 1 },
- { name : "Feuerwehr", blip : 88, vec : [-379.55792236328125,6119.08349609375,30.84847068786621], color : 59 },
- { name : "Polizei", blip : 60, vec : [-446.552734375,6014.15625,30.716373443603516], color : 38 },
- { name : "Krankenhaus", blip : 61, vec : [-248.28936767578125,6330.9140625,31.42618179321289], color : 75 },
- { name : "viNETWORK", blip : 136, vec : [732.6917114257812,2523.56689453125,72.37091064453125], color : 75 }, //Color needs to be changed
- { name : "InterTrans", blip : 351, vec : [569.4540405273438,2796.857421875,41.01826858520508], color : 75 }, //Color needs to be changed
- { name : "Zeitungsjunge (Job)", blip : 126, vec : [569.4540405273438,2796.857421875,41.01826858520508], color : 6 } //Color needs to be yellow
- ]
- function loginPlayer(ply, username, password)
- {
- if (!username || !password || pdata[ply.networkId].login == true || pdata[ply.networkId].loggingin == true)
- {
- returnLogin(ply, false);
- return;
- }
- var color_white = new RGB(255,255,255);
- ply.SendChatMessage("Bitte warten, es wird versucht sich einzuloggen...", color_white);
- pdata[ply.networkId].loggingin = true
- request.post('http://silvio-schwark.de/wbb/index.php/userPasswordCheck', {form: {'username':username, 'password':password}}, function (error, response, body) {
- if (!error && response.statusCode == 200) {
- if (body == "true") {
- returnLogin(ply, true);
- }else{
- returnLogin(ply, false);
- }
- }else{
- returnLogin(ply, false);
- }
- });
- }
- function returnLogin(ply, state)
- {
- if (pdata[ply.networkId].login == true) { return false; }
- pdata[ply.networkId].loggingin = false
- if (state == true) {
- var spawnskin_m = [[42,0],[0,0],[5,4],[0,0],[5,utils.randomint(0,15)],[0,0],[23,0],[0,0],[1,0],[0,0],[0,0],[1,utils.randomint(3,8)]]
- var spawnskin_f = [[21,0],[0,0],[10,3],[4,0],[2,1],[0,0],[26,0],[0,0],[2,0],[0,0],[0,0],[5,1]]
- pdata[ply.networkId].login = true
- pdata[ply.networkId].rpname = "Schwanzus.Longus"
- pdata[ply.networkId].admin = 5
- pdata[ply.networkId].job = 0
- pdata[ply.networkId].jrank = 2
- pdata[ply.networkId].dienst = false
- pdata[ply.networkId].gender = "Männlich"
- pdata[ply.networkId].clothes = spawnskin_m
- pdata[ply.networkId].hunger = 100
- pdata[ply.networkId].hygiene = 100
- pdata[ply.networkId].harndrang = 100
- pdata[ply.networkId].energie = 100
- pdata[ply.networkId].inventory = items.createInventory()
- ply.stats.money = 1000
- ply.graphics.ui.chat = true
- ply.graphics.ui.radar = true
- ply.graphics.ui.hud = true
- ply.graphics.ui.areaNames = true
- ply.graphics.ui.radarZoom = true
- ply.nametag.name = pdata[ply.networkId].rpname
- ply.nametag.displayTag = true
- ply.graphics.ui.DisplayMessage("~g~Erfolgreich eingeloggt.~n~~w~Willkommen bei The Vita Village!");
- ply.ToggleControls(true, true)
- ply.model = GTAHash("mp_m_freemode_01");
- ply.position = new Vector3f(-379.55792236328125,6119.08349609375,30.84847068786621);
- ply.respawnPosition = new Vector3f(-379.55792236328125,6119.08349609375,30.84847068786621);
- ply.dimension = 0
- for (var i = 0; i < pdata[ply.networkId].clothes.length; i++) {
- ply.SetComponentVariation(i, pdata[ply.networkId].clothes[i][0], pdata[ply.networkId].clothes[i][1], ply.GetPropPaletteVariation(i))
- }
- ply.graphics.RenderCameras(false)
- }else{
- var color_red = new RGB(255,0,0);
- ply.SendChatMessage("[Error] Fehler beim einloggen: Falscher Benutzername oder Passwort.", color_red);
- }
- }
- function loginCommand(ply,args)
- {
- if (pdata[ply.networkId].login == true) return false;
- if (!args[0] || !args[1])
- {
- var color_red = new RGB(255,0,0);
- ply.SendChatMessage("[Error] Verwende /login [Username] [Passwort]", color_red);
- return;
- }
- returnLogin(ply, true); //TEMP!!!!!
- //loginPlayer(ply, args[0], args[1])
- return;
- }
- commands.set("login", loginCommand)
- function saveCommand(ply,args)
- {
- if (pdata[ply.networkId].login != true) return false;
- var color_white = new RGB(255,255,255);
- var vec = ply.position;
- var rot = ply.rotation;
- var string = vec.x+","+vec.y+","+vec.z+", "+rot.z;
- if (args[0]){
- string = string+" ("+args[0]+")";
- }
- ply.SendChatMessage("SAVED: "+string, color_white);
- utils.print(string);
- return;
- }
- commands.set("save", saveCommand)
- function testCommand(ply,args)
- {
- if (pdata[ply.networkId].login != true) return false;
- //console.log(utils.VehicleIDToHash(132))
- vehicles.createVehicle(0xB9CB3B69, ply.position, ply.rotation , pdata[ply.networkId].rpname, [pdata[ply.networkId].rpname], false, false, false)
- return;
- }
- commands.set("t", testCommand)
- function testCommand2(ply,args)
- {
- vehicles.saveVehicles()
- return;
- }
- commands.set("t2", testCommand2)
- function helpCommand(ply,args)
- {
- if (pdata[ply.networkId].login != true) return false;
- var color_seagreen = new RGB(67,205,128);
- var color_white = new RGB(255,255,255);
- ply.SendChatMessage("~~~Hilfe / Befehle~~~", color_seagreen);
- ply.SendChatMessage("/ooc | /b | /werbung", color_white);
- if (pdata[ply.networkId].job == 6 && pdata[ply.networkId].dienst == true) {
- ply.SendChatMessage("~viNETWORK~", color_seagreen);
- ply.SendChatMessage("/news | /setinterview", color_white);
- }
- if (pdata[ply.networkId].admin >= 1) {
- ply.SendChatMessage("~Teambefehle~", color_seagreen);
- }
- if (pdata[ply.networkId].admin >= 3) {
- ply.SendChatMessage("/togooc", color_white);
- }
- return;
- }
- commands.set("help", helpCommand)
- commands.set("hilfe", helpCommand)
- commands.set("befehle", helpCommand)
- commands.set("cmd", helpCommand)
- commands.set("commands", helpCommand)
- function PlayerCreated(ply)
- {
- //Sync the weather and time with the player
- ply.world.weatherPersistNow = global.weather
- var d = new Date();
- ply.world.SetTime(d.getHours(), d.getMinutes(), 0);
- ply.world.freezeTime = true;
- //Set initial data
- pdata[ply.networkId] = {}
- pdata[ply.networkId].login = false
- //Set the player model
- ply.model = 0xFAB48BCB //Does not seem to work :(
- //freeze the player
- //Load ipls (http://gtaforums.com/topic/793840-ipls-and-coordinates/)
- ply.world.RequestIPL("post_hiest_unload"); //Vangelico
- ply.world.RequestIPL("facelobby"); //Lifeinvader
- ply.world.RequestIPL("FIBlobby"); //FIB Lobby
- //REMOVE_IPL("CS1_02_cf_offmission"); // remove the doors so you can enter - NOT SURE IF THIS MUST STILL BE REMOVED
- //coords : -72.68752, 6253.72656, 31.08991
- ply.world.RequestIPL("CS1_02_cf_onmission1"); //Cluckin' Bell Factory
- ply.world.RequestIPL("CS1_02_cf_onmission3"); //Cluckin' Bell Factory
- ply.world.RequestIPL("CS1_02_cf_onmission2"); //Cluckin' Bell Factory
- ply.world.RequestIPL("CS1_02_cf_onmission4"); //Cluckin' Bell Factory
- ply.world.RequestIPL("ufo") //UFO @ Ford Zancudo and Desert - Only spawn them at night, look what time it can be
- ply.world.RequestIPL("farm") //O'Neil Drugfarm
- ply.world.RequestIPL("farm_props") //O'Neil Drugfarm
- ply.world.RequestIPL("farmint") //O'Neil Drugfarm
- ply.world.RequestIPL("shr_int") //Simeons Autohaus
- ply.world.RequestIPL("BH1_47_JoshHse_Burnt")
- ply.world.RequestIPL("RC12B_HospitalInterior")
- ply.world.RequestIPL("canyonriver01")
- ply.world.RequestIPL("railing_start")
- var color_seagreen = new RGB(67,205,128);
- var color_white = new RGB(255,255,255);
- ply.SendChatMessage("~The Vita Village~", color_seagreen);
- ply.SendChatMessage("Herzlich willkommen bei The Vita Village!", color_white);
- ply.SendChatMessage("Um anzufangen melde dich bitte mit [#FFFF00]/login [username] [passwort][#FFFFFF] ein.", color_white);
- ply.SendChatMessage("Registrieren kannst du dich auf [#FFFF00]www.vita-online.eu", color_white);
- ply.graphics.ui.radar = false
- ply.graphics.ui.hud = false
- ply.graphics.ui.areaNames = false
- ply.graphics.ui.radarZoom = false
- ply.nametag.displayTag = false
- ply.nametag.displayArmorBar = false
- ply.nametag.displayHealthBar = false
- ply.nametag.font = "Segoe UI"
- ply.nametag.drawDistance = 60.0
- ply.graphics.ui.chat = false
- ply.dimension = 1337
- var d = new Date();
- ply.world.SetDate(d.getDate(), d.getMonth()+1, d.getFullYear());
- }
- events.Add("PlayerCreated", PlayerCreated);
- function PlayerReady(ply)
- {
- ply.respawnPosition = new Vector3f(-446.552734375,5990.15625,40.716373443603516)
- ply.Respawn(500,500)
- ply.ToggleControls(false, false)
- var cam = ply.graphics.CreateCamera()
- cam.position = new Vector3f(-446.08349609375,6007.5517578125,45.38370132446289 )
- cam.pointAtCoord = new Vector3f(-405.6472473144531,6047.19091796875,35.3988094329834)
- cam.fov = 90.0
- cam.active = true
- ply.graphics.RenderCameras(true)
- }
- events.Add("PlayerReady", PlayerReady);
- function PlayerDestroyed(ply)
- {
- pdata[ply.networkId] = undefined
- }
- events.Add("PlayerDestroyed", PlayerDestroyed);
- function PlayerDeath(ply, reason)
- {
- var vec = ply.position
- ply.respawnPosition = new Vector4f(vec[0], vec[1], vec[2], ply.rotation) //TEMP
- ply.Respawn(500,500)
- //Add a check here if there are medics online, otherwise respawn player at the hospital
- //ply.ToggleControls(false, true)
- //ply.graphics.ui.DisplayMessage("~r~Du bist schwer verletzt~n~~w~Du musst auf einen Sanitäter warten.");
- //ply.PlayAnim("missfinale_c2steve_cameraman_death", "death_camman") //THIS SHEET IS STILL BUGGED ;D
- //ELSE
- //respawnatHospital(ply)
- return false;
- }
- events.Add("PlayerDeath", PlayerDeath);
- function PlayerRespawn(ply)
- {
- //Add a check here if there are medics online, otherwise respawn player at the hospital
- //ply.ToggleControls(false, true)
- //ply.graphics.ui.DisplayMessage("~r~Du bist schwer verletzt~n~~w~Du musst auf einen Sanitäter warten.");
- //ply.PlayAnim("missfinale_c2steve_cameraman_death", "death_camman") //THIS SHEET IS STILL BUGGED ;D
- //ELSE
- //respawnatHospital(ply)
- }
- events.Add("PlayerRespawn", PlayerRespawn);
- function respawnAtHospital(ply)
- {
- //TODO
- }
- function main()
- {
- utils.print("~~~~V³ - Vita Village V~~~");
- utils.print("Gamemode wird initialisiert...");
- weather.setRandomWeather();
- for (var i = 0; i < serverBlips.length; i++) {
- var data = serverBlips[i]
- var temp = new Blip(data.blip, data.vec[0], data.vec[1], data.vec[2])
- temp.highDetail = true;
- temp.shortRange = true;
- temp.name = data.name
- temp.color = data.color
- }
- bank.loadAccounts()
- //Jobs loaded after bank accounts initalised (bank.js)
- //Gangs loaded after jobs initialised (jobs.js)
- //Vehicles loaded after gangs initalised (gangs.js)
- utils.print("Starte ständige Timer...");
- setInterval(function()
- {
- var d = new Date();
- gtamp.players.forEach(function(ply) {
- ply.world.SetTime(d.getHours(), d.getMinutes(), 0);
- });
- }, 60000);
- setInterval(gang.saveGangs, 1000*60*15)
- setInterval(bank.saveAccounts, 1000*60*16)
- setInterval(vehicles.saveVehicles, 1000*60*17)
- //Synchronisation with clients (kinda, this really sucks tbh :S)
- //OH AND BTW THIS IS BROKEN ATM SO DO NOT TOUCH KTHNXBB
- /*setInterval(function() {
- gtamp.players.forEach(function(ply) {
- if (ply.client && ply.networkId && pdata && pdata[ply.networkId] && tdata && tdata[ply.networkId])
- {
- if (pdata[ply.networkId] != tdata[ply.networkId])
- console.log("THERE IS A DIFFERENCE AHHHHHH!")
- }
- });
- tdata = pdata
- },100);*/
- //setInter
- setInterval(function()
- {
- gtamp.players.forEach(function(ply) {
- ply.graphics.ui.DisplayTextExtended("Vita Village V - Development Version\nwww.vita-online.eu", 4, new Vector2f(0.95, 0.97), new Vector2f(0.0,0.25), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 0, true, 520)
- if (pdata[ply.networkId].login == true)
- {
- var string = ""
- if (ply.stats.money >= 0)
- string += "~g~"+ply.stats.money+" Vero"
- else
- string += "~r~"+ply.stats.money+" Vero"
- ply.graphics.ui.DisplayTextExtended(string, 4, new Vector2f(0.93, 0.02), new Vector2f(0.0,0.35), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 1, true, 520)
- //XP UND LEVEL
- string = "~w~Level: ~b~1 (2 ¦ 20%)"
- ply.graphics.ui.DisplayTextExtended(string, 4, new Vector2f(0.93, 0.04), new Vector2f(0.0,0.35), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 1, true, 520)
- string = "~w~Energie: ~b~"
- if (pdata[ply.networkId].energie > 0) {
- for( var i = 1; i < Math.ceil(pdata[ply.networkId].energie/10); i++) {
- string +="I"
- }
- }else{
- string = "~r~LEER"
- }
- ply.graphics.ui.DisplayTextExtended(string, 4, new Vector2f(0.93, 0.07), new Vector2f(0.0,0.35), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 1, true, 520)
- string = "~w~Hunger: ~r~"
- if (pdata[ply.networkId].hunger > 0) {
- for( var i = 1; i < Math.ceil(pdata[ply.networkId].hunger/10); i++) {
- string +="I"
- }
- }else{
- string += "~r~LEER"
- }
- ply.graphics.ui.DisplayTextExtended(string, 4, new Vector2f(0.93, 0.09), new Vector2f(0.0,0.35), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 1, true, 520)
- string = "~w~Harndrang: ~y~"
- if (pdata[ply.networkId].harndrang > 0) {
- for( var i = 1; i < Math.ceil(pdata[ply.networkId].harndrang/10); i++) {
- string +="I"
- }
- }else{
- string += "~r~LEER"
- }
- ply.graphics.ui.DisplayTextExtended(string, 4, new Vector2f(0.93, 0.11), new Vector2f(0.0,0.35), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 1, true, 520)
- string = "~w~Hygiene: ~p~"
- if (pdata[ply.networkId].hygiene > 0) {
- for( var i = 1; i < Math.ceil(pdata[ply.networkId].hygiene/10); i++) {
- string +="I"
- }
- }else{
- string += "~r~LEER"
- }
- ply.graphics.ui.DisplayTextExtended(string, 4, new Vector2f(0.93, 0.13), new Vector2f(0.0,0.35), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 1, true, 520)
- var veh = ply.vehicle
- if (veh && veh.driver && veh.driver.networkId == ply.networkId && veh.modelHash != 0x1ABA13B5) { //Model Hash Check is only TEMP!!!!!!!!!!!!
- var speed = Math.floor(veh.velocity.length*3.6)
- var tachostring = speed+" KM/H"
- if (vdata[veh.networkId].panne == true || vdata[veh.networkId].fuel <= 0)
- {
- veh.engine = false
- }else{ //temporär bis Motorstartfunktion
- veh.engine = true
- }
- if (typeof vdata[veh.networkId].oldvec == "undefined")
- vdata[veh.networkId].oldvec = new Vector3f(veh.position.x, veh.position.y, veh.position.z)
- var dist = utils.getDistanceBetweenVectors(veh.position,vdata[veh.networkId].oldvec)/1000 //Das ist immer 0 weil die Vektoren das selbe sind, frag nicht warum :'(
- vdata[veh.networkId].km += dist
- tachostring += " - "+(vdata[veh.networkId].km).toFixed(2)+" KM"
- if (veh.engine == true){
- if (vdata[veh.networkId].bfuel != true) //Benzinabnahme blockiert (z.B. Jobfahrzeuge)
- {
- if ((vdata[veh.networkId].fuel -= dist*0.65) < 0){
- vdata[veh.networkId].fuel = 0
- }else{
- vdata[veh.networkId].fuel -= dist*0.65
- }
- }
- }
- if (vdata[veh.networkId].panne == true)
- {
- tachostring += " - ~r~Fahrzeugpanne"
- }else{
- if (vdata[veh.networkId].fuel > 90) {
- tachostring += " - Tank: ~r~III~y~III~g~IIII"
- }else if (vdata[veh.networkId].fuel > 80) {
- tachostring += " - Tank: ~r~III~y~III~g~III"
- }else if (vdata[veh.networkId].fuel > 70) {
- tachostring += " - Tank: ~r~III~y~III~g~II"
- }else if (vdata[veh.networkId].fuel > 60) {
- tachostring += " - Tank: ~r~III~y~III~g~I"
- }else if (vdata[veh.networkId].fuel > 50) {
- tachostring += " - Tank: ~r~III~y~III"
- }else if (vdata[veh.networkId].fuel > 40) {
- tachostring += " - Tank: ~r~III~y~II"
- }else if (vdata[veh.networkId].fuel > 30) {
- tachostring += " - Tank: ~r~III~y~I"
- }else if (vdata[veh.networkId].fuel > 20) {
- tachostring += " - Tank: ~r~III"
- }else if (vdata[veh.networkId].fuel > 10) {
- tachostring += " - Tank: ~r~II"
- }else if (vdata[veh.networkId].fuel > 0) {
- tachostring += " - Tank: ~r~I"
- }else{
- tachostring += " - Tank: ~r~LEER"
- }
- }
- ply.graphics.ui.DisplayTextExtended(tachostring, 4, new Vector2f(0.5, 0.9), new Vector2f(0.0,0.5), new RGBA(255,255,255,255), new Vector2f(0.0, 1.0), 0, true, 520)
- vdata[veh.networkId].oldvec = new Vector3f(veh.position.x, veh.position.y, veh.position.z)
- }
- }
- });
- }, 500)
- }
- main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement