Let's say you want to host domains first.com and second.com.
Create folders for their files:
| const webpack = require("webpack"); | |
| const Q3Rcon = require("quake3-rcon"); | |
| const config = require("./.local.json"); | |
| const rcon = new Q3Rcon({ | |
| address: config.ip || "127.0.0.1", | |
| port: config.port || 30120, | |
| password: config.password | |
| }); | |
| const compiler = webpack({ | 
| -- Client side events that are abused with TriggerEvent | |
| local ForbiddenClientEvents = { | |
| "ambulancier:selfRespawn", | |
| "bank:transfer", | |
| "esx_ambulancejob:revive", | |
| "esx-qalle-jail:openJailMenu", | |
| "esx_jailer:wysylandoo", | |
| "esx_policejob:getarrested", | |
| "esx_society:openBossMenu", | |
| "esx:spawnVehicle", | 
| local lastDied = os.time() | |
| local maxLastDiedAllowed = 300 -- 5 minutes | |
| AddEventHandler( | |
| "gameEventTriggered", | |
| function(eventName, data) | |
| if eventName ~= "CEventNetworkEntityDamage" then | |
| return | |
| end | |
| local victim = data[1] | 
| import UserManager from '../classes/managers/userManager'; | |
| import { Ban } from '../models'; | |
| const utils = require('../utils'); | |
| on('playerConnecting', (playerName: string, setKickReason: any, deferrals: any) => { | |
| const netId = (global as any).source; | 
| public static async Task StartSwitch(Vector4 fromWh, Vector4 toWh, int model) | |
| { | |
| try | |
| { | |
| var from = new Vector3(fromWh.X, fromWh.Y, fromWh.Z); | |
| var to = new Vector3(toWh.X, toWh.Y, toWh.Z); | |
| var playerPed = Game.PlayerPed; | |
| var switchModel = new Model(model); | |
| var switchType = GetIdealPlayerSwitchType(from.X, from.Y, from.Z, to.X, to.Y, to.Z); | |
| var switchFlag = 1024; | 
| using System; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using System.Text; | |
| using System.Threading.Tasks; | |
| using CitizenFX.Core; | |
| using CitizenFX.Core.Native; | |
| # ============================= | |
| # -----------DQN TODO --------- | |
| # ============================= | |
| def setup_play_ddqn(self): | |
| self.plugin_path = offshoot.config["file_paths"]["plugins"] | |
| context_classifier_path = f"{self.plugin_path}/SerpentCloneyGameAgentPlugin/files/ml_models/cloney_context_classifier.model" | |
| context_classifier = CNNInceptionV3ContextClassifier(input_shape=(288, 512, 3)) | |
| context_classifier.prepare_generators() | 
| DQN Setup Steps Cloney | |
| 1. init dqn in setup_play() | |
| 2. ?????? enter_train_mode() (WHAT IS DIFFERENCE BETWEEN RUN OBSERVER TRAIN) | |
| 3. next_step()????????? | |
| 4. build_frame_stack() and then / or update_frame_stack()?? | |
| 5. pick_action(RANDOM or PREDICTED at % 20) how to format action mapping | |
| 6. now observe = next_step()????? | |
| 7. append_to_replay_memory() how to use reward parameter???? | |
| 8. calculate_target_error() how to use observation parameter from previous step??? |