• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Making an Open Rpg

Ralle

Owner
Level 77
Joined
Oct 6, 2004
Messages
10,096
written by Bob27...

Introduction
Making an Open Rpg is pretty easy, but making a good one can be very hard. An Open Rpg should have more then one race, should have quests and an extra inventry system.

Planning, Terraining, Object Data and Hero Selection System
The first thing that should be done is to plan what you want your Open Rpg to turn out as. What races, classes and places do you want in your map? One other thing that I surgest you do is make up names for your towns/cities/places. When you have finished planning you need to have a basic idea in your head where different places will be. If possible try drawing a map or write some notes down on a peice of paper. The first part of the terraining will be the starting city/town. I surgest that you use a normel town as the starting location and not a major city. Also suround a small area of the town with forest/desert/plains. This will also be the time to import units/building/doodads/ect. Now its time to start the Object Data. A basic tuorial for Object Data can be found Here. For now just do any doodads/destructables that will be needed in the starting town and the heros players can select from. Now for the Hero Selection System it can be done in a number of ways. You can have a wisp or some other unit that you move into a circle of power infront of a hero, selecting that hero. That can be used useing a trigger something like this.
  • Archer
    • Events
      • Unit - A unit enters Archer <gen>
    • Conditions
      • (Unit-type of (Entering unit)) Equal to Wisp
    • Actions
      • Unit - Create 1 Snake Aes for (Owner of (Entering unit)) at (Center of Start2 <gen>) facing Default building facing (270.0) degrees
      • Hero - Create Ankh of Reincarnation and give it to (Last created unit)
      • If ((Owner of (Entering unit)) Equal to Player 1 (Red)) then do (Set Player1 = (Last created unit)) else do (Do nothing)
      • If ((Owner of (Entering unit)) Equal to Player 2 (Blue)) then do (Set Player2 = (Last created unit)) else do (Do nothing)
      • If ((Owner of (Entering unit)) Equal to Player 6 (Orange)) then do (Set Player6 = (Last created unit)) else do (Do nothing)
      • If ((Owner of (Entering unit)) Equal to Player 7 (Green)) then do (Set Player7 = (Last created unit)) else do (Do nothing)
      • Unit - Remove (Entering unit) from the game
You can also use [thread=6803]Dialogs[/thread]. The next way is using Chat Commands. The trigger for that would be something like this.
  • Player One Choose Humans
    • Events
      • Player - Player 1 (Red) types a chat message containing -Human as An exact match
    • Conditions
    • Actions
      • Trigger - Turn off (This trigger)
      • Camera - Apply Choose Human <gen> for Player 1 (Red) over 0.00 seconds
      • Game - Display to (All players) for 10.00 seconds the text: Now Choose a class ...
      • Trigger - Turn on Player One Choose Hunter <gen>
      • Trigger - Turn on Player One Choose Priest <gen>
      • Trigger - Turn on Player One Choose Warrier <gen>
This trigger is choosing the race, choosing the class would be something like this.
  • Player One Choose Warrier
    • Events
      • Player - Player 1 (Red) types a chat message containing -Warrier as An exact match
    • Conditions
    • Actions
      • Player - Make Player 1 (Red) treat Player 10 (Light Blue) as an Ally
      • Player - Make Player 10 (Light Blue) treat Player 1 (Red) as an Ally
      • Unit - Create 1 Human Warrier for Player 1 (Red) at (Center of Human Spawn <gen>) facing 90.00 degrees
      • Set Player_One_Character = (Last created unit)
      • Trigger - Turn off Player One Choose Hunter <gen>
      • Trigger - Turn off Player One Choose Priest <gen>
      • Trigger - Turn off Player One Choose Warrier <gen>
Making Cp's, Quests and systems
The next thing to do is the make the object data for the Cps. Create gaurds, civillions, workers and bosses. Bosses are heros that can either be on a team or be a creep. Bosses on a team should have a rank (eg, captain, luitenant, king, ect). Now all you have to do is place them around the city. Now the quests will mostly wait for a while but for now we will make a story quest. Story quests are things that should lead up to some event happening. Even though it will be a multiplayer Open Rpg it should have some sought of story to it. The players should spawn right next to the person who will start the story quests.
  • Quest One The Knights of Asiria Player One
    • Events
      • Unit - A unit Is issued an order targeting an object
    • Conditions
      • (Target unit of issued order) Equal to Captain 0029 <gen>
      • (Owner of (Triggering unit)) Equal to Player 1 (Red)
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Player_One_Character has an item of type Pirates Battle Plans) Equal to True
        • Then - Actions
          • Cinematic - Turn cinematic mode On for Player Group - Player 1 (Red)
          • Hero - Order Player_One_Character to Give Captain 0029 <gen> to (Item carried by Player_One_Character of type Pirates Battle Plans)
          • Player - Add 30 to Player 1 (Red) Current gold
          • Cinematic - Send transmission to Player Group - Player 1 (Red) from Captain 0029 <gen> named Captain Hafer: Play No sound and display Well done! I'll jus.... Modify duration: Add 0.00 seconds and Wait
          • Cinematic - Send transmission to Player Group - Player 1 (Red) from Captain 0029 <gen> named Captain Hafer: Play No sound and display Here is your reward.... Modify duration: Add 0.00 seconds and Wait
          • Cinematic - Turn cinematic mode Off for Player Group - Player 1 (Red)
          • Trigger - Turn off (This trigger)
          • Trigger - Turn on Quest Two The Scorpians Player One <gen>
        • Else - Actions
          • Cinematic - Turn cinematic mode On for Player Group - Player 1 (Red)
          • Cinematic - Send transmission to Player Group - Player 1 (Red) from Captain 0029 <gen> named Captain Hafer: Play No sound and display The king has ordere.... Modify duration: Add 0.00 seconds and Wait
          • Cinematic - Send transmission to Player Group - Player 1 (Red) from Captain 0029 <gen> named Captain Hafer: Play No sound and display First of all you mu.... Modify duration: Add 0.00 seconds and Wait
          • Cinematic - Send transmission to Player Group - Player 1 (Red) from Captain 0029 <gen> named Captain Hafer: Play No sound and display Then come back to m.... Modify duration: Add 0.00 seconds and Wait
          • Cinematic - Turn cinematic mode Off for Player Group - Player 1 (Red)
This code is a basic quest. Although the conditions, ect will be different for quest the trigger should mostly be the same. Now this is also time to import systems. These will include things like extra inventory systems, weapon wielding systems and camera systems (all are optional). This is a good weapon wielding system I found and is easy to change because its in Gui.
  • Wield
    • Events
      • Unit - A unit Uses an item
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
      • Or - Any (Conditions) are true
        • Conditions
          • (Item-type of (Item being manipulated)) Equal to Katana
          • (Item-type of (Item being manipulated)) Equal to Claw
          • (Item-type of (Item being manipulated)) Equal to Saber
          • (Item-type of (Item being manipulated)) Equal to Short Sword
    • Actions
      • -------- This if/then/else is to not show a message like "Wielding Weapon: <Empty String>" when you didn't had a weapon wielded before. --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Weapon[(Player number of (Owner of (Triggering unit)))] Not equal to No item
        • Then - Actions
          • Game - Display to (Player group((Owner of (Hero manipulating item)))) for 2.50 seconds the text: ((Unwielding Weapon: |CFF0000FF + (Name of Weapon_Bonus[(Player number of (Owner of (Hero manipulating item)))])) + |r)
        • Else - Actions
          • Game - Display to (Player group((Owner of (Hero manipulating item)))) for 2.50 seconds the text: Unwielding Weapon: ...
      • Unit - Remove Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] from (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Item-type of (Item being manipulated)) Equal to Katana
        • Then - Actions
          • Set Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] = Katana
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Item-type of (Item being manipulated)) Equal to Claw
        • Then - Actions
          • Set Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] = Claw
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Item-type of (Item being manipulated)) Equal to Saber
            • Then - Actions
              • Set Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] = Saber
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Item-type of (Item being manipulated)) Equal to Short Sword
        • Then - Actions
          • Set Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] = Short Sword
        • Else - Actions
      • Unit - Add Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] to (Triggering unit)
      • Set Weapon[(Player number of (Owner of (Triggering unit)))] = (Item being manipulated)
      • Game - Display to (Player group((Owner of (Hero manipulating item)))) for 2.50 seconds the text: ((Wielding Weapon: |CFF0000FF + (Name of Weapon_Bonus[(Player number of (Owner of (Hero manipulating item)))])) + |r)
      • Item - Set charges remaining in (Item being manipulated) to 1
      • Hero - Drop (Item being manipulated) from (Triggering unit)
      • Hero - Give (Item being manipulated) to (Triggering unit)
  • Drop Weapon
    • Events
      • Unit - A unit Loses an item
    • Conditions
    • Actions
      • Wait 0.30 seconds
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Triggering unit) has an item of type (Item-type of Weapon[(Player number of (Owner of (Triggering unit)))])) Equal to False
          • (Item being manipulated) Equal to Weapon[(Player number of (Owner of (Triggering unit)))]
        • Then - Actions
          • Game - Display to (Player group((Owner of (Triggering unit)))) for 2.50 seconds the text: ((Unwielding Weapon: |CFF0000FF + (Name of Weapon_Bonus[(Player number of (Owner of (Triggering unit)))])) + |r)
          • Unit - Remove Weapon_Bonus[(Player number of (Owner of (Triggering unit)))] from (Triggering unit)
          • Set Weapon[(Player number of (Owner of (Triggering unit)))] = No item
        • Else - Actions
Creeps
Now its time to add Creeps to the area of terrain you have already finished. In starting locations there should be creeps that can be killed by levels 1-10, cities 5-20, forests, plains, deserts, ect 5-40, dungeons, creep bosses 40-60. You should also increase the maxinum hero level to 60 through the Advanced-Game Interface menu.

Finish the map
Now you just have to fill in the rest of the map. Finish the terrain, quests, cps, systems and races in a simular way to what is said above. If you have any question you can private message me.
 
Last edited:
Top