|
addict
|
OP
addict
Joined: Jun 2013
|
I spent almost 2 weeks now on my mod. Just today, for 3 hours, I try to understand why that fucking GEN_TransfertNPCPayment won't work in my new mod, while I had it working in a previous one? Fuck this DB system, fuck this osiris shit, that make implementing a basic stuff a 10 steps riddle. Fuck everything. Fuck that fucking char that won't fucking teleport to another fucking area in the fucking level, while my dummy can. Fuck.
|
|
|
|
enthusiast
|
enthusiast
Joined: Jan 2010
|
I'm with you. I gave up on scripting in the absence of a run-time scripting log. It's nearly impossible to figure out why things aren't working with zero feedback from the game. Failing silently is really just not what scripts should do.
|
|
|
|
addict
|
OP
addict
Joined: Jun 2013
|
Thanks. And I mean, geeeeeesh, come on, just making a quest appear in the journal at the end of a convo: 1/ in the journal, create the quest categorie 2/ in the journal, create the quest 3/ in the journal, create the quest state 4/in osiris, create a DB_QuestDef_State 5/in the convo, edit the flag to set 6/in the flag to set, choose the flag categorie 7/in the proper flag categorie, add a custom flag: QuestUpdate_quest_questState. Beware, because if you make a typo mistake here, nothing will fire, but that flag will stay in the list, with no way to remove it.... And without Windemere's tut, there is no way I could have figured that out, without sinking some more hours reverse learning the Native convos, which I did for that GEN_Transfert stuff.
I am really utterly frustrated. I can feel the potential of it all, I had some successes in osiris and scripting (because yeah, you have to learn osiris AND scripting), but some inconsistencies make a very basic stuff an incredible hurdle run, where you don't know where the hurdles will appear, and you run blindfolded...
I know the Larian team is doing its best, I really appreciate this, I know the Engine and community is in its infancy, but right now, I can't keep going. I will be back after some time, possibly, and start afresh, after 146 hours spent on the toolset, that are hopefully not totally wasted, because I had some good grip on some stuff.
Last edited by Cromcrom; 07/10/17 12:45 PM.
|
|
|
|
addict
|
OP
addict
Joined: Jun 2013
|
And then when you think, "hell yeah, I had this osiris/scripti system working, I learnt something, I progressed, I won't have to learn it again", and because "some stuff", the whole thing crumbles apart, I fucking feel like Sisyphe.
I will wait a bit, come back to it, give it another heavy try, and if nothing gets better, take the proper conclusions: I am not smart enough for this engine and/or this engine is not tailored for what I want to achieve.
But god, having such a hard time adding a condition to a convo, like having the node appear only if the player have 50 gold in its inventory. I mean fuck, the aurora toolset, that is 15 years old now, made it a breeze. Even the DOS1 engine made it easier.
Last edited by Cromcrom; 07/10/17 09:34 AM.
|
|
|
|
member
|
member
Joined: Jan 2015
|
Well, I'm no professional programmer, but I modded quite a bit of NWN, most TES games, and Dungeon Siege. And tbh, none of these created this heavy "needlessly complicated" feel. The dungeon Siege effect script language was a bit abstruse too but even there the complexity scaled linearly with the outcome.
Again I don't want to judge (for I wrote "feel"), but I absolutely love to hear from one or more of the coding guys why exactly they did it that way.
Last edited by Seelenernter; 07/10/17 12:10 PM.
Think for yourself! Or others will do it...
|
|
|
|
journeyman
|
journeyman
Joined: Oct 2017
|
I made a script yesterday for what sounds similar to what you're trying to do, maybe you can use this as a base. When talking to an NPC, it checks if you have at least 100 gold and if so it sets a hasMoney flag on the player and gives the NPC 100 of your gold. IF
(whatever condition)
AND
CharacterGetGold(_Player,_Gold)
AND
_Gold > 99
THEN
ObjectSetFlag(_Player, "hasMoney");
Proc_GiveNPCGold(_Player,CHARACTERGUID_npcVendor_f8a54b4d-d096-4f42-a3a7-2a23d851ae26,100); Then tell the dialog node to check for hasMoney flag. A big tip that helped me a lot - if you struggle with getting a script to work, open up the Origins story and look at Larian's scripts. Go to the script editor and ctrl+shift+f and search for the command you want to use, say CharacterGetGold. Then you get examples of how Larian did it, you can see the context and then adapt it into your own script. And yes the editor is real pain (esp the scripting) and not very user friendly.
|
|
|
|
addict
|
OP
addict
Joined: Jun 2013
|
Thanks a lot Branvex, for your help. My issue so far is not really this. My issue is that, reverse engineering that GEN_Transfert code (it took me a long time to get it, because it is used both as a check and set flag, and you have to create a specific DB to have it working), by studying Larians, as you said, I finally had it to work, with origins as a parent. Then, withous origin as a parent, with every thing the same (same DB, same set up, same everything), this wouldn't work anymore. So I spent some time trying to understand, but that Osiris stuff is so fucked up, I couldn't. So the rage.
Thanks anyways.
|
|
|
|
journeyman
|
journeyman
Joined: Apr 2016
|
Why they chose to create a Prolog like "language" is completely baffling. Was there a contest to pick the most obtuse, unfriendly language used by the fewest programmers ever?
Last edited by Eldarth; 08/10/17 07:44 AM.
|
|
|
|
enthusiast
|
enthusiast
Joined: Jan 2010
|
Why they chose to create a Prolog like "language" is completely baffling. Was there a contest to pick the most obtuse, unfriendly language used by the fewest programmers ever?
They also didn't need to write their own language. Lua is a thing that exists, although I'd have preferred Python. Not sure why they didn't choose the path of least resistance.
|
|
|
|
journeyman
|
journeyman
Joined: Sep 2017
|
I found Osiris very easy to pick up. But then there's those story only functions that would have been useful in char scripting. I think they didn't go with one of the "popular" programming languages, is because modding also attracts players who aren't savvy in programming languages. Thinking all you need to know is how to IF, ELSEIF, ELSE, ENDIF, and you're set, is unrealistic. It takes some of those languages up to a year or more to pick up, and paying for classes is not always on the table for folks. I learned JS entirely from the MDN and still learning it. If Osiris was anything like say, C++, I doubt there would be much scripted mods out there. It is to give a fair chance for everyone who wants to mod. That's what I think.
Last edited by Rasikko; 08/10/17 08:37 AM.
|
|
|
|
addict
|
addict
Joined: Mar 2016
|
Osiris has existed since the original Divine Divinity game from 2002 (and was obviously developed even before that). It has been used in every single Larian game since. I wasn't around back then, but I assume it was used/designed because rule-based logic is a natural fit for event-based programming. I also found Osiris as a language fairly easy to pick up when I applied for a job at Larian (using the videos created for DOS1). However, it is definitely true that especially in the beginning, it is very hard to figure out what goes wrong when it does, and why. I have written most of the Osiris documentation from DOS2 based on what I remember was hard to figure out (like how to structure goals to ensure things get initialised/executed in the right order, and how rules get evaluated exactly), but some tutorials from the ground up like there were for DOS1 are definitely also still needed. Fortunately, the base language has remained pretty much the same and those previous videos are still 99% relevant.
|
|
|
|
|