Aller au contenu

Photo

[WIP] Al-Qadim: Episode 1 - Thieves of Halwa


  • Veuillez vous connecter pour répondre
142 réponses à ce sujet

#51
Friar

Friar
  • Members
  • 293 messages
That fixed the scorpion! Thanks again Tchos!
Coincidentally, what should I do if placeables, creatures, or tiles show a variety of color across them and say "2-D texture missing."
I don't remember leaving any textures out. Could it mean that some textures conflict? Or that the 2da isn't referenced properly?

#52
Tchos

Tchos
  • Members
  • 5 030 messages
I would open the MDB in MDB Cloner, which is a convenient way to see which textures it's looking for, then double-check if those are present in your resources.

#53
Friar

Friar
  • Members
  • 293 messages
I went to some of the original sources and grabbed the MDB files from there. I'm not sure why the MDB files didn't get in the HAK to begin with, but for the most part I have what I need.

I already redesigned Halwa, City of Solitude. I like it better now. It has more shape and while I'm not sure it is completely lore friendly with my additions I don't think there are enough people who are familiar with this AD&D setting to really know the difference. I respect the names and characters in the storyline, but since there are no maps, I've been creative.

I really want to wrap up this HAK so I can go full fledge with making the adventure!

#54
ColorsFade

ColorsFade
  • Members
  • 1 267 messages

koundog1 wrote...

I already redesigned Halwa, City of Solitude. I like it better now. It has more shape and while I'm not sure it is completely lore friendly with my additions I don't think there are enough people who are familiar with this AD&D setting to really know the difference. I respect the names and characters in the storyline, but since there are no maps, I've been creative.


I was so worried when I started my campaign about what AD&D gurus might think - that they might get bent out of shape with the liberties I am taking with certain locations, names, etc. 

But I think that's unnecessary worry. If you build a fun mod, I think the vast majority of users are not going to care :-)



And if anyone gives you crap about something, tell them to go build a mod ;)

#55
Friar

Friar
  • Members
  • 293 messages
When you're right, you're right!

#56
Friar

Friar
  • Members
  • 293 messages
A little about me and what is influencing this adventure. I began playing video games in a place some of you might remember as "Aladdin's Castle." I remember thinking that the arcade tokens were ancient coins with an genies lamp inscribed on the back. The experience seemed magical and the Arabic setting was now sitting on me thinking that video games could grant my every wish.

Later, my older sister introduced me to Sinbad movies. In those days the special effects were still a marvel. Not like Star Wars but still unique and special. I ever saw the Arabic world as a political upheaval but a place of magnificent tradition art, mystery and beauty. Those movies along with my childhood memories paint this module.

By the time I was finishing up high school I was really interested in Dungeons and Dragons but always too busy playing football and keeping my grades up. I was an artist too and would fantasize and draw things that felt enchanted. The Forgotten realms seemed enormous and I wanted to explore it like Disney World. I played all the SSI games up to and including Buck Rogers Countdown to doomsday. SSI then released something that I knew I would love before I even pulled it out of the box. Al-Qadim: The Genies Curse was released and became the only game I would play.

I never understood why another Al-Qadim was never released.

Therefore, it seemed fitting that if I were to choose to make a D&D adventure then it would need to be set in Zakhara.

Here are some more screenshots. I truly hope to share with you the things I have kept in my imagination all these years by completing this project.

Image IPB

Outside of Huzuz, the City of Delights your story begins.

Image IPB

The circus has been redone.

Image IPB

The palace looms over the al-Malih river and this nearby Gypsy camp.

Image IPB

The surrounding desert is no joke. Stray too far from Halwa and you will not survive. Your character will get lost and he will die. The reason is because I like to have open worlds without an unexplained border. You might find hidden treasures out there and possibly a treasure trove but I leave it to you the player to weigh the risks.

#57
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
Looking really good and what you said happens if you wander into the desert reminded me of a man I met in Egypt that would everyday fill up his water bottle and walk into the desert as far as he could go until it was empty and then come back. It was some sort of endurance training but I just think he was mad !

Up to you and not a criticism but yellow text on a desert background doesn't show up too well.

Modifié par Iveforgotmypassword, 17 septembre 2013 - 02:26 .


#58
kamal_

kamal_
  • Members
  • 5 238 messages
I personally like the cleanness/brightness of desert area settings.

#59
Friar

Friar
  • Members
  • 293 messages
Thanks password, I've been put out with that color too. Admittedly, I've been putting off adjusting the colors for environments, text, and finding the right blend.

I've been hyper-focused on understanding scripts which by the way kamal I think I am really going to enjoy borrowing your townspeople heartbeat scripts. the information you include on the scripts themselves is so complete. It's refreshing. For some reason your scripts are making more sense to me than the scripts for the Ultima theft system. I wanted to use that for the Pasdar who patrol the city and are supposed to actually attack your player on sight if they see you doing anything illegal or suspicious.

I love the little anecdote about the mad desert man. It might be entertaining to encounter him in Zakhara at some point. I wonder if his name will be password. :)

This writer probably explains my reasons for doing an endless desert "barrier" better than I could.

http://gamerant.com/...n=zergnet_92877

Modifié par koundog1, 17 septembre 2013 - 11:04 .


#60
Friar

Friar
  • Members
  • 293 messages

void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

int nInt;
nInt=GetLocalInt(oPC, "NW_JOURNAL_ENTRYJob: Lookout");

if (nInt < 1)
   return;

nInt = GetTimeHour();

if ((nInt > 2) && (nInt < 21))
   return;

object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("SPAWN_Mahmoud");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "c_mahmoud", lTarget);

oTarget = GetWaypointByTag("SPAWN_Dinesh");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "c_dinesh", lTarget);

}


I am trying to use this script as a way of spawning two NPCs on two seperate waypoints. I want the NPCs to only show-up late at night and after a quest has begun.

I first tried this as a walkable trigger, but it seems any time a PC walks on triggers w/ conditionals before it had the proper conditions it would not fire later when conditions are met.

I am beginning to think the same is true for this OnEnter script.

Do any of you have suggestions.

PS: Kamal, I cleared the skies up as you sort of suggested and the desert area looks 100% better!

#61
kamal_

kamal_
  • Members
  • 5 238 messages
Is that the whole script? You need to make sure it only runs successfully once, right now it will run each time the conditions are met and you'll have a bunch of copies of Mahmoud and Dinesh running around.

In your script, if the quest has not been assigned yet the nInt for the journal has never been defined or initialized. That could be causing problems because from the sound of it you can enter this trigger before the quest is assigned and it is the right time.

Also you need to make sure those are unique waypoints, they could be getting spawned on another map with waypoints by those names.

Basically, insert some
SendMessageToPC(GetFirstPC(), "Debug: progress through Dinesh Mahmoud spawn script, reached point x "); //or some other message that shows up.
throughout your script. Also you may want to send the nInt when it's the journal state, and when it's the time. You'll get a lot of valuable feedback on where things are going wrong.

ps: I have a desert specific daynight setting I've used. You can make a sandstorm with settings like your existing pics (plus thaymount dust effect).

#62
Tchos

Tchos
  • Members
  • 5 030 messages

kamal_ wrote...
Basically, insert some
SendMessageToPC(GetFirstPC(), "Debug: progress through Dinesh Mahmoud spawn script, reached point x "); //or some other message that shows up.

Use GetFirstPC(FALSE) if you might have more than one character in your party.  Without "FALSE", it'll only send the message to the originally-created party leader (who you might not be controlling, so you won't see the message), while with "FALSE" it'll send the message to the one you're currently controlling.

#63
Friar

Friar
  • Members
  • 293 messages
Okay good, the waypoints are in fact unique.

This is the whole script. That is a good point. I haven't thought about that because Dinesh and Mahmoud haven't spawned at all.

It is true that the PC will have to enter that area before the appropriate quest with nInt is assigned. There is a building the PC must access before the Journal entry is even given. The player might be in and out of that area many times before they get that appropriate journal entry.

Does it matter where I put the
SendMessageToPC(GetFirstPC()
?

You are speaking specifically about running the debug while in game mode or test mode right?
In that case don't I acces the console command ~? Then I type a specific command? Seems everyone knows how to do this except for me.

#64
kamal_

kamal_
  • Members
  • 5 238 messages

koundog1 wrote...

Does it matter where I put the
SendMessageToPC(GetFirstPC()

Those go in the scripts, at each step you want to make sure if happening. (also include tchos's FALSE bit). You will get a message in the game log window that normally tells you how much damage you do, hit rolls, etc, it's the window in the lower left corner by default.  where you see the resource logs in this pic

#65
Friar

Friar
  • Members
  • 293 messages
Ahh, so as a rule of thumb it is best to put it in every script, probably at the end of the script, right?

#66
kamal_

kamal_
  • Members
  • 5 238 messages

koundog1 wrote...

Ahh, so as a rule of thumb it is best to put it in every script, probably at the end of the script, right?

When I am testing scripts I put it in several places in the script. Right up front, to know the script is being run in the first place, then anytime there's a break, if statement, case, things of that sort. Especially with if statements, for instance this pseudo code:

void main()
{
"start script"
if (nInt==1)
{
"Hello!"
do stuff...
}
}

If I see "start script" and "Hello" on screen I know that the script ran and that the if statement was true. But if I only see "start script", I know that the script ran but the if statement was not true for some reason. You can add things to the
messaging, for instance:
SendMessageToPC(GetFirstPC(FALSE), "Debug: nInt is " + IntToString(nInt));

and this will print out the value of nInt at that line of the script, so if you are using nInt for the journal state and the journal state is 21, it will say "Debug: nInt is 21".

This is basically to give yourself better debug information. You can comment it out or remove the messaging from the script entirely once you're confident it's working as planned.

Modifié par kamal_, 16 octobre 2013 - 09:20 .


#67
Friar

Friar
  • Members
  • 293 messages
Here is how I put it in there. I don't think it is right, but at least it will give a point of reference for the conversation for me.

void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

int nInt;
nInt=GetLocalInt(oPC, "NW_JOURNAL_ENTRYJob: Lookout");

if (nInt < 1)
return;

nInt = GetTimeHour();

if ((nInt > 2) && (nInt < 21))
return;

object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("SPAWN_Mahmoud");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "c_mahmoud", lTarget);

oTarget = GetWaypointByTag("SPAWN_Dinesh");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "c_dinesh", lTarget);

SendMessageToPC(GetFirstPC(FALSE)

}



#68
Tchos

Tchos
  • Members
  • 5 030 messages
Only put it in spots where you're having problems and you want to see if a certain line is functioning at all, or you want to see what a variable is, etc. When a script doesn't seem to be working, I put one at the beginning to tell me that the script fired. Another at a spot where it's supposed to check something (reports what it checked), another where it's supposed to do something (reports that it did it), etc.

Edit: Sorry, this duplicates info that wasn't there when I started writing it.

Modifié par Tchos, 16 octobre 2013 - 09:19 .


#69
kamal_

kamal_
  • Members
  • 5 238 messages
How I'd probably set things up. This would tell me that the script runs when the pc enters the trigger, what the journal value is, what the time is, and whether the script attempted to spawn the creatures. That would make finding where the script is failing pretty easy.
======================================


void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

SendMessageToPC(GetFirstPC(FALSE, "Debug: beginning Dinesh/Mahmoud script");

int nInt;
nInt=GetLocalInt(oPC, "NW_JOURNAL_ENTRYJob: Lookout");

SendMessageToPC(GetFirstPC(FALSE, "Debug: nInt value for journal is " + IntToString(nInt));

if (nInt < 1)
return;

nInt = GetTimeHour();

SendMessageToPC(GetFirstPC(FALSE, "Debug: nInt value for time is " + IntToString(nInt));

if ((nInt > 2) && (nInt < 21))
return;

object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("SPAWN_Mahmoud");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "c_mahmoud", lTarget);

oTarget = GetWaypointByTag("SPAWN_Dinesh");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "c_dinesh", lTarget);

SendMessageToPC(GetFirstPC(FALSE, "Debug: end of script, creatures should have spawned");
}

#70
Friar

Friar
  • Members
  • 293 messages
Okay Kamal so I put the script you suggested in and no information is given when I enter the area. I have debugmode enabled and debugtext enabled.

What might I be missing?

I'm considering putting the script in the "On Client Enter Script" box.

The same type of script seems to work fine when I used it in an interior area. The differences between the interior area and exterior area are that I'm only spawning one NPC and I have one condition in that script; also it is an interior area.

But maybe these details are irrelevant.

#71
kamal_

kamal_
  • Members
  • 5 238 messages

koundog1 wrote...

Okay Kamal so I put the script you suggested in and no information is given when I enter the area. I have debugmode enabled and debugtext enabled.

What might I be missing?

I'm considering putting the script in the "On Client Enter Script" box.

The same type of script seems to work fine when I used it in an interior area. The differences between the interior area and exterior area are that I'm only spawning one NPC and I have one condition in that script; also it is an interior area.

But maybe these details are irrelevant.

If you never even see the first message the script is not running when the pc enters the trigger. Are you sure the script is attached to the OnEnter property, not the OnExit ? (I've done that before...)

#72
Tchos

Tchos
  • Members
  • 5 030 messages
Also, you don't need debugtext on for SendMessageToPC() to function. It's no special command. That's why you need to comment it out once you get it all working.

#73
Friar

Friar
  • Members
  • 293 messages
It's in the appropriate box. I put it in the "On Enter Script" box of the area's properties.
At least now I know it, just plain and simple, is not firing.

#74
kevL

kevL
  • Members
  • 4 052 messages
is the trigger flagged "hostile" ?

it's property needs to be hostile to recognize the PC

#75
Friar

Friar
  • Members
  • 293 messages
The script fires from "On Enter" of an area. It's not a speak trigger, but that info will be useful probably later down the road.