diff --git a/media/lua/client/MP_commands/TOC_MP_client.lua b/media/lua/client/MP_commands/TOC_MP_client.lua index d418df6..13c0faa 100644 --- a/media/lua/client/MP_commands/TOC_MP_client.lua +++ b/media/lua/client/MP_commands/TOC_MP_client.lua @@ -83,8 +83,48 @@ Commands["CanOperateArm"] = function(arg) end + + + +-------------------------------------------------------------------- + +function AskGetOtherPlayerData(player) + local arg = {} + + arg["From"] = getPlayer():getOnlineID() --surgoen + arg["To"] = player:getOnlineID() --patient + + + arg["command"] = "SendOtherPlayerData"; + arg["toSend"] = {player:getModData().TOC} -- will it work? + sendClientCommand("TOC", "SendServer", arg); + +end + + + + + +function SendGetOtherPlayerData(player) + local arg = {} + + arg["From"] = getPlayer():getOnlineID() --surgoen + arg["To"] = player:getOnlineID() --patient + + + arg["command"] = "GetOtherPlayerData"; + arg["toSend"] = {player:getModData().TOC} -- will it work? + sendClientCommand("TOC", "SendServer", arg); +end + + + +-- todo why is this here? this doesnt make any sense + + -- Event local onServerCommand = function(module, command, args) + -- TODO change this name if module == "TOC" and Commands[command] then args = args or {} Commands[command](args) diff --git a/media/lua/client/TOC_Client.lua b/media/lua/client/TOC_Client.lua new file mode 100644 index 0000000..b72f43c --- /dev/null +++ b/media/lua/client/TOC_Client.lua @@ -0,0 +1,34 @@ +local function OnTocServerCommand(module, command, args) +-- TODO Change name of the func + + + if module == 'TOC' then + print(command) + + if command == 'GivePlayerData' then + --local surgeon = getPlayerByOnlineID(args[1]) + local surgeon_id = args[1] + local patient = getPlayer() + + local toc_data = patient:getModData().TOC + + + --local moneyAmount = playerTwo:getInventory():getCountTypeRecurse("Money") + patient:Say("Giving info") + sendClientCommand(patient, "TOC", "SendPlayerData", {surgeon_id, toc_data}) + + elseif command == 'SendTocData' then + print("Sending TOC data") + local patient = getPlayerByOnlineID(args[1]) --todo cant we delete this>? + + + -- ew a global var.... but dunno if there's a better way to do this + MP_other_player_toc_data = args[2] + end + end +end + + + + +Events.OnServerCommand.Add(OnTocServerCommand) \ No newline at end of file diff --git a/media/lua/client/TOC_UI.lua b/media/lua/client/TOC_UI.lua index b40e66d..793e9e3 100644 --- a/media/lua/client/TOC_UI.lua +++ b/media/lua/client/TOC_UI.lua @@ -130,23 +130,28 @@ end -- end Usefull -- Function to update text/button of UIs -local function setDescUI(player, partName) +local function setDescUI(toc_data, partName) --we can easily fix this crap from here for MP compat - + -- forces sync? + --local player_obj = getSpecificPlayer(player) -- TODO set correct player - local modData = player:getModData().TOC; - local partData = modData[partName]; - descUI["textTitle"]:setText(getDisplayText_TOC(partName)); - descUI.partNameAct = partName; + + + --local testModData = player:getModData() + + + local partData = toc_data[partName] + descUI["textTitle"]:setText(getDisplayText_TOC(partName)) + descUI.partNameAct = partName -- Cut and equip if partData.is_cut and partData.is_cicatrized and partData.has_prothesis_equipped then - descUI["textEtat"]:setText("Cut and healed"); - descUI["textEtat"]:setColor(1, 0, 1, 0); - descUI["b1"]:setText("Unequip"); - descUI["b1"]:addArg("option", "Unequip"); - descUI["b1"]:setVisible(true); + descUI["textEtat"]:setText("Cut and healed") + descUI["textEtat"]:setColor(1, 0, 1, 0) + descUI["b1"]:setText("Unequip") + descUI["b1"]:addArg("option", "Unequip") + descUI["b1"]:setVisible(true) -- Cut and healed elseif partData.is_cut and partData.is_cicatrized and not partData.has_prothesis_equipped and partData.is_amputation_shown then @@ -200,7 +205,7 @@ local function setDescUI(player, partName) descUI["textEtat"]:setText("Nothing here..."); descUI["textEtat"]:setColor(1, 1, 1, 1); descUI["b1"]:setVisible(false); - elseif not partData.is_cut and getPlayer():getBodyDamage():getBodyPart(TOC_getBodyPart(partName)):bitten() then + elseif not partData.is_cut and getPlayer():getBodyDamage():getBodyPart(TOC_getBodyPart(partName)):bitten() then --TODO fix for MP descUI["textEtat"]:setText("Bitten..."); descUI["textEtat"]:setColor(1, 1, 0, 0); if isPlayerHaveSaw() then @@ -223,7 +228,7 @@ local function setDescUI(player, partName) end -- Set text for level - local player = getPlayer(); + local player = getPlayer() if string.find(partName, "Right") then local lv = player:getPerkLevel(Perks.RightHand) + 1; descUI["textLV2"]:setText("Level: " .. lv .. " / 10"); @@ -386,9 +391,9 @@ local function confirmPressMP(button, args) end local function mainPress(button, args) - descUI:open(); - descUI:setPositionPixel(mainUI:getRight(), mainUI:getY()); - setDescUI(args.player, args.part) + descUI:open() + descUI:setPositionPixel(mainUI:getRight(), mainUI:getY()) + setDescUI(args.toc_data, args.part) end local function descPress(button, args) @@ -425,42 +430,67 @@ end -- Make the UIS -local function makeMainUI(character) + +local function SetCorrectArgsMainUI(toc_data) + + --mainUI["b11"]:addArg("part", "RightArm") + mainUI["b11"]:addArg("toc_data", toc_data) + + --mainUI["b12"]:addArg("part", "LeftArm"); + mainUI["b12"]:addArg("toc_data", toc_data) + + --mainUI["b21"]:addArg("part", "RightForearm") + mainUI["b21"]:addArg("toc_data", toc_data) + + --mainUI["b22"]:addArg("part", "LeftForearm") + mainUI["b22"]:addArg("toc_data", toc_data) + + --mainUI["b31"]:addArg("part", "RightHand") + mainUI["b31"]:addArg("toc_data", toc_data) + + --mainUI["b32"]:addArg("part", "LeftHand"); + mainUI["b32"]:addArg("toc_data", toc_data) + +end - mainUI = NewUI(); + +local function makeMainUI(regen) + + + mainUI = NewUI() mainUI:setTitle("The Only Cure Menu"); mainUI:setWidthPercent(0.1); mainUI:addImageButton("b11", "", mainPress) mainUI["b11"]:addArg("part", "RightArm") - mainUI["b11"]:addArg("player", character) + --mainUI["b11"]:addArg("player", character) mainUI:addImageButton("b12", "", mainPress); mainUI["b12"]:addArg("part", "LeftArm"); - mainUI["b12"]:addArg("player", character) + --mainUI["b12"]:addArg("player", character) mainUI:nextLine(); mainUI:addImageButton("b21", "", mainPress); mainUI["b21"]:addArg("part", "RightForearm"); - mainUI["b21"]:addArg("player", character) + --mainUI["b21"]:addArg("player", character) mainUI:addImageButton("b22", "", mainPress); mainUI["b22"]:addArg("part", "LeftForearm"); - mainUI["b22"]:addArg("player", character) + --mainUI["b22"]:addArg("player", character) mainUI:nextLine(); mainUI:addImageButton("b31", "", mainPress); mainUI["b31"]:addArg("part", "RightHand"); - mainUI["b31"]:addArg("player", character) + --mainUI["b31"]:addArg("player", character) mainUI:addImageButton("b32", "", mainPress); mainUI["b32"]:addArg("part", "LeftHand"); - mainUI["b32"]:addArg("player", character) + --mainUI["b32"]:addArg("player", character) mainUI:saveLayout(); end @@ -570,17 +600,14 @@ function MakeConfirmUIMP() end -function ISHealthPanel:OnCreateTheOnlyCureUI() +function OnCreateTheOnlyCureUI() -- how do we pass the correct player here? --print(self.character) - if ISHealthPanel.otherPlayer then - makeMainUI(ISHealthPanel.otherPlayer) - else - makeMainUI(getPlayer()) - end - makeDescUI() - makeConfirmUI() + + makeMainUI(); + makeDescUI(); + makeConfirmUI(); if isClient() then MakeConfirmUIMP() end mainUI:close() @@ -595,13 +622,38 @@ local function onCreateUI() mainUI:close(); end -Events.OnCreateUI.Add(ISHealthPanel.OnCreateTheOnlyCureUI) +Events.OnCreateUI.Add(OnCreateTheOnlyCureUI) -- Add button to health panel function ISNewHealthPanel.onClick_TOC(button) + + -- button.character is patient + -- button.otherPlayer is surgeon + + sendClientCommand(button.character, "TOC", "GetPlayerData", {button.otherPlayer:getOnlineID(), button.character:getOnlineID()}) -- sends 0 & 4 as arguments + + if MP_other_player_toc_data then + print("It works") + else + print("Nopepppp") + end + + if button.character ~= button.otherPlayer then + + + SetCorrectArgsMainUI(MP_other_player_toc_data) --other player is the surgeon + + else + SetCorrectArgsMainUI(getPlayer():getModData().TOC) --myself? + + end + + mainUI:toggle() + + mainUI:setInCenterOfScreen() setImageMainUI() end @@ -634,5 +686,17 @@ function ISHealthPanel:render() end +function SendOtherPlayerData() + local mod_data = getPlayer():getModData().TOC + +end + +function GetOtherPlayerData() + local surgeonFact, useBandage, bandageAlcool, usePainkiller, painkillerCount = self:findArgs(); + + if self.patient ~= self.surgeon and isClient() then + SendCutArm(self.patient, self.partName, surgeonFact, useBandage, bandageAlcool, usePainkiller, painkillerCount); + end +end \ No newline at end of file diff --git a/media/lua/client/TOC_main.lua b/media/lua/client/TOC_main.lua index c2d74ce..887adf7 100644 --- a/media/lua/client/TOC_main.lua +++ b/media/lua/client/TOC_main.lua @@ -18,8 +18,11 @@ local function dropItem(player, modData) end local function everyOneMinute() - local player = getPlayer(); - local modData = player:getModData(); + local player = getPlayer() + local modData = player:getModData() + + --player:transmitModData() + if modData.TOC ~= nil then dropItem(player, modData); CheckIfInfect(player, modData); diff --git a/media/lua/server/TOC_MP_server.lua b/media/lua/server/TOC_MP_server.lua index 307263e..b006105 100644 --- a/media/lua/server/TOC_MP_server.lua +++ b/media/lua/server/TOC_MP_server.lua @@ -3,16 +3,45 @@ ---Server side local Commands = {} +-- todo what is this? Commands["SendServer"] = function(player, arg) local otherPlayer = getPlayerByOnlineID(arg["To"]) print("The Only Cure Command: ", arg['command']) sendServerCommand(otherPlayer, "TOC", arg["command"], arg) end + + + + + +local function OnTocClientCommand(module, command, player, args) + + if module == 'TOC' then + + print(command) + if command == 'GetPlayerData' then + + local playerOne = getPlayerByOnlineID(args[1]) + local playerTwo = getPlayerByOnlineID(args[2]) + local playerOneID = args[1] + sendServerCommand(playerTwo, "TOC", "GivePlayerData", {playerOneID}) + elseif command == 'SendPlayerData' then + local playerOne = getPlayerByOnlineID(args[1]) + local playerOneID = args[1] + local toc_data = args[2] + sendServerCommand(playerOne, "TOC", "SendTocData", {playerOneID, toc_data}) + end + end + +end + local onClientCommand = function(module, command, player, args) if module == 'TOC' and Commands[command] then args = args or {} Commands[command](_, args) end end -Events.OnClientCommand.Add(onClientCommand) \ No newline at end of file +Events.OnClientCommand.Add(OnTocClientCommand) + +--Client 1 -> Server -> Client 1 \ No newline at end of file