Megamod feedback - I'm mortified at the sexism

Drobovik said:
Well, I sure as hell not going to involve myself into this ideology debate. But...

come up with this:

lujo,

Second sticky from the top sure doesn't have any broken links, you so desire, to either

1) Don't play.
2) Roll your own.

Good luck, hopefully you will come up with the nice kill-sexism-in-Arroyo mod. :ok:

Agreed, no point in getting involved. I really dont mind whats written in the mod, sometimes even get a good chuckle out of reading some of the stuff thats in the dialogues, so does my sister.

If the game doesnt suit u (or any type of the respresentation (model vs character vs whatever) doesnt suit u), then ur welcome to:

not play, play with a male character, play another mod, make another mod, alter the existing mod, not play mods at all... Am i missing something?

U don't like it - thats fine, I respect ur opinion.

MIB said he wont change anything, I agree with him. Keep working on bug squashing ;)

EDIT: MegaMod might not be a "parody", but it is a mix of mods that were made by different people for different purposes...
 
Ty guys for the help and pointers. A few questions if I may:

I managed to find the sfall script editor, but I'm having a hard (impossible) time finding the hearders - .h files. So I can't seem to get anything to decompile. I also found a dos-based (?) decompiler of some sort but being a huge noob I can't make heads or tails out of it.

I've also found the dialogue creation tool which might be a fallout 1 tool (not sure), but it seems to require .ssl files or files with its own extension.

I've managed to open up a aklint.ssl included in a folder from the database and study it a bit - and I can "swim" there to a degree (possibly enough), but it's a vanilla klint script and references vanilla dialogue nodes.

Could I have a few more pointers with this, please? Where do I find the headers? What am I supposed to decompile to access the character scripts (?) and would a decompiler produce a .ssl file I could edit with sfall script editor?

I'll look through the posts you guys already posted again, and I may figure it out on my own somehow, but if you feel like helping out it would be much appreciated.

EDIT: I looked here http://modguide.nma-fallout.com/#FileSystem001 and it clered a few things up (maybe). .int decompiles into .ssl, and .ssl can be edited and then compiled back (with some cleanup maybe). But there's no mention of .h files I can find, and I can't figure out how to decompile anything, really.
 
@ lujo
If the decompiler you are talking about is int2ssl, the syntax would be
Code:
int2ssl acklint.int acklint.ssl
Either write that in command prompt or create a .bat file where you add that.
You can also open uncompiled scripts with the sfall script editor, but I prefer to decompile them first.

As for the headers, if you download the official mapper they come with it (in the scripts\HEADERS folder).
Also, you don't need headers to decompile, as they are no longer in the scripts once compiled. But they do help when trying to understand the scripts and editing+recompiling them.
 
I'm guessing a better option would be to just wait for the Megamod source scripts + headers to come out. Might take a while though (or isn't MIB88 planning on releasing them with the final version?).
 
Ty very much! The bat option worked (had to look up how to create a bat, but now I know something I didn't before :) )

I've tried the Ruby interpreter but it kept returning errors (maybe syntax is the problem but I've followed the instructions from
http://www.nma-fallout.com/forum/viewtopic.php?t=42365), but managed to not have success.

Ok, I believe I can do stuff now! (and do it again once megamod updates, ofc, in case the klint situation stayes the way it is :) )



Oh, and just in case there is an easy answer to this question - is there something like a map of numeric representations of various atributes, items and stuff? I'm sure I've seen it somewhere at some point but can't remember where :(
 
NovaRain said:
@lujo
Check the Define.h header file.

Thank you, googled it :)

EDIT: also took a look at vault13.gam to check some stuff out and browsed a few tutorials. As soon as I'm able to figure compiling it back up I think I can have a "treat any chosen one equaly" mod for klint working.

I'm a bit lost still, but I don't mind writing a more mature set of nodes for the female chosen ones, but first to stop the guy running up to you. :) I got a funny dialogue line for "tagged: speech" chars where you point out that the village elder has in fact passed the test as opposed to all the warrior types ^^ Then when he gets dejected because you might not need his help, you can tell him you'll check the temple first and then if you do need it you'll be sure to come to him - lots of people failed allready and this is the biggest crisis yet, etc...
 
JimTheDinosaur said:
I'm guessing a better option would be to just wait for the Megamod source scripts + headers to come out. Might take a while though (or isn't MIB88 planning on releasing them with the final version?).

I haven't given any serious thought to releasing the source files, only because I didn't think they would be useful for anyone. For the longest time (2004 to 2009) I was using the Ruby decompiler. After that, and once Nirran started modding Fallout, too, I started using a decompiler he put together for me, which also takes into account Timeslip's new script features. I have never used header files. Everything is in the scripts themselves. If anyone does want my decompiled scripts, though, I can send them. I just don't know how useful they would be.
 
MIB88 said:
JimTheDinosaur said:
I'm guessing a better option would be to just wait for the Megamod source scripts + headers to come out. Might take a while though (or isn't MIB88 planning on releasing them with the final version?).

I haven't given any serious thought to releasing the source files, only because I didn't think they would be useful for anyone. For the longest time (2004 to 2009) I was using the Ruby decompiler. After that, and once Nirran started modding Fallout, too, I started using a decompiler he put together for me, which also takes into account Timeslip's new script features. I have never used header files. Everything is in the scripts themselves. If anyone does want my decompiled scripts, though, I can send them. I just don't know how useful they would be.

Seeing how tricky the whole thing was/is to a coding noob like me I'd wager they could be rather helpful, especially if you use notes in the script. Doubly so if the scripts are "cleaned up" - I'm having trouble compiling the acklint.ssl with FSE because of errors in places I haven't changed or influenced in any way.

Also, there's plenty of room to improve - I just visited Scrapheap and there's fallout 1 dialogue in there ("I know you, you're looking for the City of Necropolis..."). With easier access somebody could improve it and tie it to the rest of the wasteland rather more easily. Just saying.
 
MIB88,

I want your sources too :crazy:

{212}{}{[Keeps bugging him until Mr. Mib88 throws a pile of decompiled scripts in his face] Man, you're annoying, kid!}
 
Yeah, there are still plenty of errors in the MM.

As for those scripts, there are no notes. I decompile a script and toy with until I get a new recompiled script to work in the mapper and the game. The only place I make notes is in a changelog.

I really don't know what to tell you if you are using FSE. I've never worked with it. I'll upload some examples somewhere so you can see what my scripts look like. Just tellin'.
 
Well, I'm stuck again...

What I do is I delete the bit of code with the runup (I think I've identified it correctly)

Code:
if ((get_critter_stat(dude_obj, 34) == 1) and (local_var(5) == 0) and (global_var(10) != 2)) then begin
		LVar0 := tile_num_in_direction(tile_num(dude_obj), random(1, 5), random(1, 3));
		animate_move_obj_to_tile(self_obj, LVar0, 1);
		dialogue_system_enter;
	end

And then the FSE starts giving me trouble with compiling it until I delete all the mechanics related to handing a spear or powder over. I get errors here:

Code:
procedure Node020spear
begin
	variable LVar0 := 0;
	LVar0 := obj_carrying_pid_obj(self_obj, 7);
	metarule(43, self_obj);
	rm_mult_objs_from_inven(self_obj, LVar0, 1);
	add_mult_objs_to_inven(dude_obj, LVar0, 1);
	LVar0 := obj_carrying_pid_obj(self_obj, 7);
	wield_obj_critter(self_obj, LVar0);
	gsay_reply(751, 396);
	giq_option(1, 751, 398, Node999, 50);
end

At the line:

Code:
rm_mult_objs_from_inven(self_obj, LVar0, 1);

saying I'm missing an ";" or something (without touching it, the bit of code I delete seems to be unrelated to that part).

But just to see if I've cut the right part and if I can compile, I get rid of everything but:

Code:
procedure Node020spear
begin
	gsay_reply(751, 396);
	giq_option(1, 751, 398, Node999, 50);
end

And then it compiles.

But when I put into the directory, both male and female get a static Klint - with no dialogue at all. Anyone have any thoughts, an idea where exactly to find a working compiler (ruby seems to not do anything). How do you guys compile your scripts?[/code]
 
@ lujo

Code:
Change
 	rm_mult_objs_from_inven(self_obj, LVar0, 1);
to
	rm_obj_from_inven(self_obj, LVar0);
There are a few more lines like that. Just exchange the "rm_mult_objs_from_inven" with "rm_obj_from_inven" and also remove ", 1" at the end. After that it should compile just fine.

@ Mark
Clean up your code dammit. :P
I know, I know, Ruby ain't so picky.
 
Darek said:
@ lujo

Code:
Change
 	rm_mult_objs_from_inven(self_obj, LVar0, 1);
to
	rm_obj_from_inven(self_obj, LVar0);
There are a few more lines like that. Just exchange the "rm_mult_objs_from_inven" with "rm_obj_from_inven" and also remove ", 1" at the end. After that it should compile just fine.

Ty, I figured there was a syntax problem (or something) - after applying this it compiled just fine, and I managed to swap the "run up" around (had him run up to the guy) and eliminate it completely.

I've got a different problem now - now there's no dialogue at all for either male or female. The conversation screen opens up and there are no lines, and you can't close it.

I tried replacing the runup procedure (which has the dialogue_system_enter" with:

Code:
if ((local_var(7) == 0) and (tile_distance_objs(self_obj, dude_obj) < 5)) then begin
		set_local_var(7, 1);
		dialogue_system_enter;
	end

from the acklint2.int (ssl), because I thought that what that means is that if you use the dialogue option on Klint and are close enough it would take it over to the talk_p_proc procedure but no dice. You also can't exit dialogue, so if I restart the same screen is stuck even with a different character.

You guys have been a fountain of useful info, and I've learned quite a bit, but does anyone have a solution to this conundrum?
 
@Darek:

Hey, remember when I said those sources might not be useful to anyone else? (When I see these scripts decompiled elsewhere, it looks like, well, not another language, but definitely a very different dialect.) What I use works for me! :P (Thanks again, Nirran).


@lujo:
Why do you want to enter dialog when you get close enough? Why not just make it like (almost) every other critter, and use the enter dialog function when you click on them? I can't tell you what is going on there.
 
MIB88 said:
I haven't given any serious thought to releasing the source files, only because I didn't think they would be useful for anyone. For the longest time (2004 to 2009) I was using the Ruby decompiler. After that, and once Nirran started modding Fallout, too, I started using a decompiler he put together for me, which also takes into account Timeslip's new script features. I have never used header files. Everything is in the scripts themselves. If anyone does want my decompiled scripts, though, I can send them. I just don't know how useful they would be.

Respect mang, I don't even want to know what my scripts would look like decompiled. Though it's probably different when working with mechanics than with content (my define.h is a least twice as big only on account of checking for types of weapons wielded etc. for instance).

Edit: Hmm, disappointing, my hs_tohit script is only the third biggest script in the game. Damn slaver run and caravan scripts.
 
MIB88 said:
@lujo:
Why do you want to enter dialog when you get close enough? Why not just make it like (almost) every other critter, and use the enter dialog function when you click on them? I can't tell you what is going on there.

That would be fine too - what I'm looking for is is a way to do that. I'm a complete noob, remeber? What happens is I do enter dialogue, but it's completely blank. And I can't seem to figure out what exactly controlls entering dialogue when you click on something.

I guess you can't help me due to platform reasons, but I wouldn't mind switching over to your platform if it makes life easier. Is it on nirrans downloads page?

I mean, I'm only using FSE and int2ssl because int2ssl because I couldn't figure ruby out (and I've tried based on your imput to another user). Id gladly switch if I knew how to...
 
lujo said:
What happens is I do enter dialogue, but it's completely blank. And I can't seem to figure out what exactly controlls entering dialogue when you click on something.
This:

Code:
procedure talk_p_proc

this controls the dialogue itself:

Code:
procedure Node001
begin
	Reply(111);
	NOption(4, 113, Node003);
	NOption(5, 114, Node010);
	NOption(4, 115, Node998);
end

in the end whole thing looks like this:

Code:
procedure talk_p_proc
begin
	dialogue_start(-1, -1, -1)
	if (game_time_hour >= 2130) or (game_time_hour 600) then begin
		call Node016;
	end
	else begin
		if (global_var(GVAR_SOME_SHIT) == 1) then begin
			call Node017;
		end
		else begin
			if (global_var(GVAR_SOME_SHIT) == 2) then begin
				call Node018;
			end
			else begin
				call Node001;
			end
		end
	end
	dialogue_end
end

procedure Node001
begin
	Reply(111);
	NOption(4, 113, Node003);
	NOption(5, 114, Node010);
	NOption(4, 115, Node998);
end

Code:
Reply(Y) := what NPC is saying,
NOption(X,Y,Z) := what player has to say. 

X := player's IQ,
Y := line in MSG,
Z := call to dialogue Node.

there's also:

Code:
procedure Node014
begin
	NMessage(148);
end

which is a simple NPC's message, player can't reply to. In most cases it leads to dialogue end (DONE message, or something like that).

also, also:

Code:
procedure Node999
begin

end

"empty" Node above leads to dialogue end... so:

Code:
procedure some-shit
begin
	Reply(111);
	NOption(4, 115, Node999);
end

picking this option will end the dialogue.

Note that those are defines... not shit-numbers... shit-numbers will look like this:

Code:
#define dialogue_start(x,y,z)	start_gdialog(NAME,self_obj,z,x,y);	\
								gsay_start;

#define dialogue_end			gsay_end;		\
								end_dialogue;

#define Reply(x)						gSay_Reply(NAME,x)
#define GMessage(x)						gSay_Message(NAME,x,GOOD_REACTION)
#define NMessage(x)						gSay_Message(NAME,x,NEUTRAL_REACTION)
#define BMessage(x)						gSay_Message(NAME,x,BAD_REACTION)
// Option(IQ, Message Number, Node Number)	==>		giQ_Option(IQ, Message Number, Node Number)
#define GOption(x,y,z)					giQ_Option(x,NAME,y,z,GOOD_REACTION)
#define NOption(x,y,z)					giQ_Option(x,NAME,y,z,NEUTRAL_REACTION)
#define BOption(x,y,z)					giQ_Option(x,NAME,y,z,BAD_REACTION)

// Mood defines //
#define GOOD_REACTION		(49)
#define NEUTRAL_REACTION	(50)
#define BAD_REACTION		(51)

NAME := position of MSG in scripts.lst (456, 2, 128, etc.)

if you want to force the dialogue then use dialogue_system_enter in critter_p_proc:

Code:
procedure critter_p_proc
begin
//--catch dude near the entrance
	if (tile_distance_from_dude <= 7) then begin
		if (local_var(LVAR_GUARD_STATUS) == 0) or (local_var(LVAR_GUARD_STATUS) == 5) then begin
			dialogue_system_enter;
		end
	end
end

Code:
#define tile_distance_from_dude				tile_distance_objs(self_obj,dude_obj)

but remember to set LVAR during dialogue to something other than conditions needed to force the dialogue (LVAR_GUARD_STATUS == 0, or 5), otherwise critter will be entering dialogue without end.

---------------------------------EDIT

This will make dialogue_system_enter only once:

Code:
procedure critter_p_proc
begin
   if (tile_distance_objs(self_obj,dude_obj) <= 4) and (local_var(1) == 0) then begin
         dialogue_system_enter;
      end
   end
end

procedure talk_p_proc
begin
	start_gdialog(496, self_obj, 4, -1, -1);
	gsay_start;
	if (local_var(1) == 0) then begin
		call SOME_SHIT_00;
	end
	else begin
		call SOME_SHIT_01;
	end	
	gsay_end;
	end_dialogue;
end

procedure SOME_SHIT_00
begin
	gSay_Reply(496, 130) 
	giq_option(7, 496, 131, some_shitty_shit_00, 49);
	giq_option(4, 496, 132, some_shitty_shit_01, 51);
	giq_option(4, 496, 133, some_shitty_shit_02, 50);
	set_local_var(1, 1);
end
 
Wow! I'll dig into this right away! :D

Thank you!

FSE doesn't recognize the

Code:
dialogue_start(-1, -1, -1)

command. :(

What are the numbers for, and what editing method are you using? :)
 
MIB88 said:
@Darek:

Hey, remember when I said those sources might not be useful to anyone else? (When I see these scripts decompiled elsewhere, it looks like, well, not another language, but definitely a very different dialect.) What I use works for me! :P
He he, just messing with ya. Isn't Ruby with all the op_code and stuff, or is that just from the NOID decompiler?
Anyway, I believe you, and if you don't make notes or use headers, your source files won't be as useful (I don't use headers either by the way).
Also, for those who knows what they are doing, it's not that hard to decompile, edit and recompile your scripts.

@ lujo

Shouldn't you rather have "start_gdialog(751, self_obj, 4, -1, -1);".
That's assuming it's the acklint script.
What you wrote was a macro, so you would need to define a header file, maybe define.H?
 
Back
Top