Shoutbox

Author Topic: officesession - jemanden beleidigen?  (Read 1225 times)

0 Members and 1 Guest are viewing this topic.

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
officesession - jemanden beleidigen?
« on: 27 July 2015, 16:38:29 »
Ich habe bei der officesession/lua mal    SetProperty(Sim,"CutsceneInsultCharacter",1) hinzugefuegt (und bei cleanup es auch entfernt), aber ich bekomme die Option waehrend der Wahl nicht wenn ich den richtigen Titel habe.
Muss ich woanders auch noch was aendern?

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: officesession - jemanden beleidigen?
« Reply #1 on: 27 July 2015, 18:17:31 »
Ich glaube, dass ich auch etwas in MeasureToObjects.dbt einfuegen muss damit es in der officesession erscheint. Bin mir aber nicht sicher was.

Vielleicht am Ende:
2400   550   0   82   295   6   ""   ()   ""   0   0   |

Ich habe das Teils von CurryFavor kopiert und die 295 hab ich gewaehlt, weil die Nummer nahe der von Compliment und Curry Favor ist und noch nicht vergeben war.

Ist das so richtig?

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: officesession - jemanden beleidigen?
« Reply #2 on: 27 July 2015, 18:27:05 »
MeasureToObjects verbindet eine Measure mit den Filtern (welche entscheiden, wo eine Measure auftaucht bzw. ggf welches Ziel die Measure hat), das heißt die Zahl muss der ID deines Filters entsprechen.

Ich vermute stark, dass die cutscenemeasures unabhängig von den normalen Versionen sind, möglicherweise auch hardcoded, aber kann auch sein, dass ich mich da täusche

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: officesession - jemanden beleidigen?
« Reply #3 on: 27 July 2015, 20:28:16 »
Ahhh danke, das macht doch schon mehr Sinn!

MeasureToObjects
2400   550   0   82   1569   6   ""   ()   ""   0   0   |

Filter
1569   "CanUseCutsceneInsultCharacter"   "__F((Object.CanBeControlledInCutscene())AND (Object.HasProperty(CutsceneInsultCharacter)))"   |

Probier ich gleich mal

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: officesession - jemanden beleidigen?
« Reply #4 on: 27 July 2015, 21:39:27 »
Funktioniert :)

Code: [Select]
Sollte aber in Filter noch das hinzufuegen
1569   "CanUseCutsceneInsultCharacter"   "__F((Object.CanBeControlledInCutscene())AND (Object.HasProperty(CutsceneInsultCharacter))AND(Object.HasMinNobilityTitle(6)))"   |

Um zu checken, dass man auch normalerweise Beleidigen kann!
« Last Edit: 27 July 2015, 21:41:07 by dip12 »

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: officesession - jemanden beleidigen?
« Reply #5 on: 29 July 2015, 14:55:11 »
Obwohl alles klappt wollte ich aber doch wissen wie ich in der officesession abstellen kann, dass der Charakter die Beleidigung woertlich ausspricht (und damit andere Aktionen fuer die Dauer unterbindet).
Der Beleidigte spricht die Entwiderung nicht, das hab ich irgendwie geschafft.

Code: [Select]
function Cutscene()

if SimGetCutscene("","cutscene") then
CutsceneSetMeasureLockTime("cutscene", 2.0)
end

Sleep(0.2)

--how far the Destination can be to start this action
local MaxDistance = 1000
--how far from the destination, the owner should stand while reading the letter from rome
local ActionDistance = 120
--how much favor from destination to owner is decreased
local ModifyFavor = 10
--how much favor from observers to destination is decreased when duel is rejected
local ObserverFavor = 10
SetData("ObserverFavor",ObserverFavor)
--how long message for destination will be displayed
local MsgTimeOut = 0.5 --15 sekunden

local MeasureID = GetCurrentMeasureID("")
local TimeOut = mdata_GetTimeOut(MeasureID)

-- check if the owner has RattleTheChains impact
local Chain_factor = 1
if GetImpactValue("","RattleTheChains")==1 then
Chain_factor = 2
end
 
MeasureSetNotRestartable()
-- check if the destination has BeVenerability impact
if GetImpactValue("Destination","BeVenerability")==1 then
MsgQuick("", "@L_PRIVILEGES_121_BEVENERABILITY_FAILURES_+0", GetID("Destination"))
StopMeasure()
end
SetMeasureRepeat(TimeOut)

Sleep(0.1)

--let the dialog begin
local Index = MsgSay("","@L_DUELL_1_DIALOGMSG_INSULTS")
--store label index for news message
local ReplacementLabel = "_DUELL_1_DIALOGMSG_INSULTS_+"..Index
--display decision message for destination
local ChooseText = "@B[A,@L_DUELL_1_DIALOGMSG_INSULTEDONE_+2]@B[B,@L_DUELL_1_DIALOGMSG_INSULTEDONE_+3]"
ChooseText = ChooseText.."@C[A,@L_DUELL_1_DIALOGMSG_INSULTEDONE_+2]"

local Result = MsgSayInteraction("Destination","Destination","",
ChooseText,
ms_055_insultcharacter_AIDecide,  --AIFunc
--"@L_DUELL_1_DIALOGMSG_INSULTEDONE_+0",
"@L_DUELL_1_DIALOGMSG_INSULTEDONE_+1",
GetID(""),ReplacementLabel,GetID("Destination"))

--destination wants satisfaction
if Result == "A" then 
-- MsgSay("Destination","@L_DUELL_1_DIALOGMSG_INSULTEDONE_SATISFACTION_YES")
MsgNewsNoWait("","Destination","","intrigue",-1,
"@L_DUELL_1_DIALOGMSG_INSULTER_+0",
"@L_DUELL_1_DIALOGMSG_INSULTER_YES_+0",GetID(""),GetID("Destination"),ReplacementLabel)

-- initialize the cutscene:
CreateCutscene("Duel","my_duel")
CopyAliasToCutscene("Destination","my_duel","challenger")
CopyAliasToCutscene("","my_duel","challenged")
CutsceneCallUnscheduled("my_duel","Start")

--destination is a n00b and defeats
elseif Result == "B" then
-- MsgSay("Destination","@L_DUELL_1_DIALOGMSG_INSULTEDONE_SATISFACTION_NO")
MsgNewsNoWait("","Destination","","intrigue",-1,
"@L_DUELL_1_DIALOGMSG_INSULTER_+0",
"@L_DUELL_1_DIALOGMSG_INSULTER_NO_+0",GetID(""),GetID("Destination"),ReplacementLabel)

--find sims in range and decrease favor to destination
SendCommandNoWait("Destination","DecreaseFavor")
end
chr_GainXP("",GetData("BaseXP"))
ModifyFavor = ModifyFavor / Chain_factor
chr_ModifyFavor("Destination","",-ModifyFavor)
StopMeasure()
end

function DecreaseFavor()
local ObserverFavor = GetData("ObserverFavor")
local Radius = 2000
local Count = Find("", "__F( (Object.GetObjectsByRadius(Sim) == "..Radius..")","Sim", -1)
for i=0,Count-1 do
chr_ModifyFavor("Sim"..i,"",-ObserverFavor)
SendCommandNoWait("Sim"..i,"LookAt")
Sleep(0.1)
end
end

function LookAt()
Sleep(0.1)
AlignTo("", "Destination")
Sleep(0.2)
if Rand(2) == 0 then
PlayAnimation("","cheer_02")
else
PlayAnimation("","cheer_01")
end
end

function CleanUp()
if GetData("FromCutscene") == 0 then
DestroyCutscene("cutscene")
if AliasExists("Destination") then
StopAnimation("Destination")
end
StopAnimation("")
end
end