• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!

Need people to test multiple RPG systems

Status
Not open for further replies.

Deleted member 177737

D

Deleted member 177737

Hey,

I've been secretly working on a few RPG systems for a future project and to upload to the spells section. I did a bit of testing and they all seem to work but now I need a few people to try them out and see if there are any bugs and tell me what thoughts you had about them.

I created quite a few systems and you can see how to test most of them on these two videos. The map is attached.

 

Attachments

  • RPG Test.w3x
    100.8 KB · Views: 48
Last edited by a moderator:
Level 7
Joined
Apr 1, 2010
Messages
289
there are a couple leaks
  • Set Attacker[(Integer A)] = (Position of No unit)
should use
  • Custom script: call RemoveLocation(udg_Attacker[GetForLoopIndexA()])
you should get rid of the do nothings as the do nothing and aren't needed.
your movement trigger leaks a lot of locations, set them to a point var then remove them

but other then leaks, I would say that this is a pretty cool system.
 
Level 28
Joined
Jan 26, 2007
Messages
4,789
Arrowkey Movement:
I could not figure out what "Esc Turn" is meant to do. The explanation given doesn't say much.
The movement-trigger itself is very... bad. Too many ITE's (If Then Elses), leaks, waits. Just nothing you'd want to have in your map.
You also need more variables to grant the user an easy way to change the options (such as turn speed, movement speed).
The trigger "Initilize" is useless, you could just copy the event to the setup-trigger and remove it.

Unlocking:
A huge flaw is that there should be different degrees of keys. Not every key fits to every lock.
A bug I've found is that, if the objects are close enough to eachother, you can unlock the first item (succesfully), then your keys are set to 0 and immediately try unlocking the other object - which fails, but no error message is shown.
Easy solution: delete the trigger "Error message". Create a variable for the error string (again, makes it easier for whoever uses that system) and implement it directly on the other trigger that actually unlocks the chest.

Talking:
Again, this could be better with a set of variables and options instead of having to create a new trigger for every unit you wish to be able to talk to.

Searching:
I don't know if you have noticed, but you can place all actions, except for the "item - create item" one OUTSIDE the if/then/else.
You are repeating things that do not have to be repeated.
Aside from that: put the second ITE inside the else-section of the first one, the last ITE isn't even required
  • Actions
    • Set EvilGuardSearchVarible = (Random integer number between 1 and 3)
    • Set SearchedUnitVarible1 = (Target unit of ability being cast)
    • Unit - Pause SearchedUnitVarible1
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • EvilGuardSearchVarible Equal to 1
      • Then - Actions
        • Item - Create Kelen's Dagger of Escape at (Position of (Casting unit))
      • Else - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • EvilGuardSearchVarible Equal to 2
          • Then - Actions
            • Item - Create Claws of Attack +15 at (Position of (Casting unit))
          • Else - Actions
            • Item - Create Frostguard at (Position of (Casting unit))
    • Game - Display to (All players matching ((Player 1 (Red) controller) Equal to User)) the text: (While searching the + ((Name of SearchedUnitVarible1) + ( you found + ((Name of (Last created item)) + .))))
    • Unit - Make SearchedUnitVarible1 Invulnerable
    • Countdown Timer - Start RemoveBodiesTimer as a One-shot timer that will expire in 60.00 seconds
Remove Bodies:
This would be very good with a LOCAL timer, not a global one.
As it is now, you can kill a unit, and 59 seconds later kill another one - this corpse will disappear almost instantaneously, leaving you without the loot.
Trust me: this happens far more than you'd think.

Reading:
You'll grow tired of this, but variables.
What's wrong with "readType[1] = Book (Draconic Language) / languageRequired = draconic / languageMinLevel = 6"?
Of course, you could extend this with requiring multiple languages, but still...


GENERAL:
Not much bugs (problems could exist in the Body Removal and the Unlocking), but the triggering requires some heavy work if you're ever thinking about uploading this.
You've got a lot of leaks to clean, an entire set of user-options to create and you will have to rethink and redo many of the systems.
The user is boss, the user wants simple-to-edit systems. Creating a new trigger for every unit you wish to talk to, or creating a massive 3 triggers for every unit that can die and drop something (I imagine there could be 50 of those units, thus 150 triggers) is just too much!
Use arrayed variables, loops, everything you can think of to prevent such ridiculous trigger amounts.

That said, once you think the systems are ready to be uploaded: check your spelling and grammar a last time.
I disliked how the variables were called "varibles", or how the spellbook says "abilitys".
 

Deleted member 177737

D

Deleted member 177737

Arrowkey Movement:
I could not figure out what "Esc Turn" is meant to do. The explanation given doesn't say much.
The movement-trigger itself is very... bad. Too many ITE's (If Then Elses), leaks, waits. Just nothing you'd want to have in your map.
You also need more variables to grant the user an easy way to change the options (such as turn speed, movement speed).
The trigger "Initilize" is useless, you could just copy the event to the setup-trigger and remove it.

Unlocking:
A huge flaw is that there should be different degrees of keys. Not every key fits to every lock.
A bug I've found is that, if the objects are close enough to eachother, you can unlock the first item (succesfully), then your keys are set to 0 and immediately try unlocking the other object - which fails, but no error message is shown.
Easy solution: delete the trigger "Error message". Create a variable for the error string (again, makes it easier for whoever uses that system) and implement it directly on the other trigger that actually unlocks the chest.

Talking:
Again, this could be better with a set of variables and options instead of having to create a new trigger for every unit you wish to be able to talk to.

Searching:
I don't know if you have noticed, but you can place all actions, except for the "item - create item" one OUTSIDE the if/then/else.
You are repeating things that do not have to be repeated.
Aside from that: put the second ITE inside the else-section of the first one, the last ITE isn't even required
  • Actions
    • Set EvilGuardSearchVarible = (Random integer number between 1 and 3)
    • Set SearchedUnitVarible1 = (Target unit of ability being cast)
    • Unit - Pause SearchedUnitVarible1
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • EvilGuardSearchVarible Equal to 1
      • Then - Actions
        • Item - Create Kelen's Dagger of Escape at (Position of (Casting unit))
      • Else - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • EvilGuardSearchVarible Equal to 2
          • Then - Actions
            • Item - Create Claws of Attack +15 at (Position of (Casting unit))
          • Else - Actions
            • Item - Create Frostguard at (Position of (Casting unit))
    • Game - Display to (All players matching ((Player 1 (Red) controller) Equal to User)) the text: (While searching the + ((Name of SearchedUnitVarible1) + ( you found + ((Name of (Last created item)) + .))))
    • Unit - Make SearchedUnitVarible1 Invulnerable
    • Countdown Timer - Start RemoveBodiesTimer as a One-shot timer that will expire in 60.00 seconds
Remove Bodies:
This would be very good with a LOCAL timer, not a global one.
As it is now, you can kill a unit, and 59 seconds later kill another one - this corpse will disappear almost instantaneously, leaving you without the loot.
Trust me: this happens far more than you'd think.

Reading:
You'll grow tired of this, but variables.
What's wrong with "readType[1] = Book (Draconic Language) / languageRequired = draconic / languageMinLevel = 6"?
Of course, you could extend this with requiring multiple languages, but still...


GENERAL:
Not much bugs (problems could exist in the Body Removal and the Unlocking), but the triggering requires some heavy work if you're ever thinking about uploading this.
You've got a lot of leaks to clean, an entire set of user-options to create and you will have to rethink and redo many of the systems.
The user is boss, the user wants simple-to-edit systems. Creating a new trigger for every unit you wish to talk to, or creating a massive 3 triggers for every unit that can die and drop something (I imagine there could be 50 of those units, thus 150 triggers) is just too much!
Use arrayed variables, loops, everything you can think of to prevent such ridiculous trigger amounts.

That said, once you think the systems are ready to be uploaded: check your spelling and grammar a last time.
I disliked how the variables were called "varibles", or how the spellbook says "abilitys".


I've read and updated what I could from your post, and the new version of the map has been uploaded (It includes my custom shops what I spent an hour or so on).

What I couldn't figure out how to do was make a local timer for the bodies.

BTW thanks for getting me to figure out how to make 1 variable be used for multiple things, I'll be updating some more of the systems with that.

As for the arrow key system I have no idea how to edit it further because I found it on youtube as a broken down non-working system and managed to get it to work as it does now, after editing everything I could I was unable to figure out how to fix up the rest.

Edit: Updated most of the systems to use arrayed variables.
 
Last edited by a moderator:
Level 28
Joined
Jan 26, 2007
Messages
4,789
Well, with arrays I mean more like this:

Initialize Variables:
  • Init Books
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Book 1 --------
      • Set read_BookType[1] = Book (Common Language) (Common Language)
      • Set read_WhichLanguage[1] = common
      • Set read_LanguageLevel[1] = 0
      • Set read_BookText[1] = You pick up the book and notice that the book is titled "Riverworld", on the back it says that the book is about a world after death.
      • Set read_FailToRead[1] = <Empty String>
      • -------- Book 2 --------
      • Set read_BookType[2] = Book (Draconic Language) (Draconic Language)
      • Set read_WhichLanguage[2] = draconic
      • Set read_LanguageLevel[2] = 6
      • Set read_BookText[2] = You attempt to read the book, after a short while you figure out that it is just an old recipt book of a draconic merchant.
      • Set read_FailToRead[2] = You attempt to read the draconic book but you cannot translate it without more knowledge of the draconic language.
      • -------- Book Count --------
      • Set read_BookCount = 2
Read book:
  • Read Books
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Read
    • Actions
      • For each (Integer A) from 1 to read_BookCount, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of (Target unit of ability being cast)) Equal to read_BookType[(Integer A)]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Languages[read_WhichLanguage[(Integer A)]] Greater than or equal to read_LanguageLevel[(Integer A)]
                • Then - Actions
                  • Game - Display to (Player group((Owner of (Triggering unit)))) the text: read_BookText[(Integer A)]
                • Else - Actions
                  • Game - Display to (Player group((Owner of (Triggering unit)))) the text: read_FailToRead[(Integer A)]
              • Custom script: set bj_forLoopAIndex = 100
            • Else - Actions
You see?
You only need 2 triggers for all books in your map.
The user can easily edit the system by just changing some variables. The system will sort out the rest later.

That is how all systems should be: easy to edit (even if you don't know anything about triggers).
If you could edit all systems like that, then it might get approved.
NOTE: It is also best that you edit the system I've given above (read books) so it supports multiple languages (e.g.: you need both Common language level 3, and Draconic language level 8 to read book "X").
 

Deleted member 177737

D

Deleted member 177737

I'll update the map on top in a few days, looks like I have a bit more to learn before I do a lot of editing. Thanks for all the help so far, I added both of you to the credits.
 

Deleted member 177737

D

Deleted member 177737

Thx.

I've just finished fixing up the systems as best I could, I also fixed up the systems on my other maps with apocalyps's advice. Uploading new version in a min.
 

Deleted member 177737

D

Deleted member 177737

Uploaded newest map to main post, added a few systems and improvised a few.
 
Status
Not open for further replies.

Similar threads

D
  • Locked
Replies
0
Views
636
Deleted member 177737
D
D
  • Locked
Replies
0
Views
608
Deleted member 177737
D
D
  • Locked
Replies
7
Views
854
Deleted member 177737
D
D
  • Locked
Replies
3
Views
9K
Top