View Full Version : Applying for NOTD
Gentlemen,
I propose you again to work as map creator for NOTD.
I'm a system developer/map maker and modelist as well. Of course I can use jass and VJass.
So, even if a new NOTD AM is not requested, I really would like to fix those damned bugs like fatals !
If you are interested... I'm there!
MissyMichelle
16-11-09, 19:30
Fatal is fixed.(atleast for FIXED)
Md5 is fixed (in FIXED, Version K too iiirc)
If you want, edit all the lines that are not in line with warcraft v1.24 (returnbug)
since beta8 is one of the few specially allowed maps to be runned on 1.24 without requiring to solve that.
Fatal is fixed.(atleast for FIXED)
Md5 is fixed (in FIXED, Version K too iiirc)
If you want, edit all the lines that are not in line with warcraft v1.24 (returnbug)
since beta8 is one of the few specially allowed maps to be runned on 1.24 without requiring to solve that.
I dont have the open source of any NOTD.
But, what is the probleme for you in 1.24b? Are you using return bug? Old libraries?
Its easy to fix, if they are enough comments to understand your triggers. Or if they are in standard "form".
And, btw, I have made a marine model in the Hive , its light, and with little attachements, NOTD could have different marines, not all with the simple "gun", even if they use shotgun etc...
MissyMichelle
16-11-09, 19:54
not sure if there is any links for the Offical 1.5c opensource.....
currently my version(mapeditor not me btw) never fix return bug etc, therefore unable to be hosted on 1.24
The best should be to give me the 1.5d b8 in open source, no? On what version is your map fixed?
Fix return bugs etc...should not be a probleme, I suppose. If you say me where they are.
MissyMichelle
16-11-09, 20:03
lol... jk2pach, you are missing something.
NOTD:AM FIXED =/= NOTD:AM BETA8
refer to this, ignore the 2nd post
http://www.notd-aftermath.com/showthread.php?9-NOTD-AM-1-5c-FIXED-Warcraft-Version-1-23-Only
So this is an other version, different?
MissyMichelle
16-11-09, 20:24
yes, theres 3 version after 1.5c went open source.
Kyuu Version K
Ace Beta8
and this FIXED.
there was another one that "had solved returnbug" and could be played on bnet,
but im not very sure since the info was before forums moved here.
Beta8 is mainstream since it can be hosted on bnet due to exemption.
that aside, i already gave ace the infomation required to solve the fatals and whatever.
(whether anot he know or has the same method or another way which is better to solve)
alternatively, you can start from scratch by fixing every issue in 1.5c offical os.
complete fatal is impossible. certain fatal like EM sphere is possible, but after lengthy editing.
(there is steps to follow to cause fatal during EMsphere release, not releasing info about tho since im not the one that found out =/)
(contact fatal is cause by the same reason as em fatal provided you can figure out whats wrong. just that unlike em fatal, you have no control to prevent contact)
Well with a complete list of bugs in 1.5c AND the os of 1.5c I could try to make a version playable on Bnet.
Rust_Knight
16-11-09, 22:26
''And, btw, I have made a marine model in the Hive , its light, and with little attachements, NOTD could have different marines, not all with the simple "gun", even if they use shotgun etc...'' i would be interested in seeing some new marine models in notd, i guess a lot of people would... ^^
http://www.hiveworkshop.com/forums/models-530/animated-marine-jk2pach-146212/?prev=u%3Djk2pach
The open source of 1.5c is in fact Open Sourced. If you want it, reply here and I'll upload it.
Unless Sleeping decides to change this policy.
~VJ
sleepingferret
17-11-09, 01:59
1.5c was marked as Open Source and shall remain so, it was released to the general public. The ONLY RULE that shall be enforced in regards to it's use is that all maps published in reference to or under the NOTD: AM "line" if you will must comply with the project founder's original intent to while provide a source entertainment, it must remain "true" to life and within the principles upheld by the USMC. Or you must remove all associations to the NOTD: AM project and Starlite from your map.
The triggers and such are free to use as you deem appropriate as the map itself has been released as open source.
here's the open source
http://www.mediafire.com/?md2izyjdtzd
Bugs:
1. MD5 fatals when used on targets lit up by ft napalm
2. Shiva fatals all the time
3. Random fatals at startup
4. Col+ can't save in NM
5. Cerb/Mundus occasionally get stuck (after you kill them the game doesnt continue)
6. Doesn't work on 1.24
Possibly intentional issues...
6. Delta operator doesn't get CAS in containment
7. AF tower is vulnerable after delta af
8. Ghouls eat you at end of containment
9. Eris burns through chapter change
The 1st 5 are fixed in the fixed ver but the unprotected version isnt available.
MissyMichelle
17-11-09, 03:20
there is no point balancing or improving something if core issue is not resolved.
its like you have a ferrari that keeps having engine failure and yet you want to send it for custom coating
Gentlemen,
Thanks for the links. I will begin to discover the map the next night (actually its 08.40 AM in my country and I have to work^^).
I will try to fix those bugs with pleasure!
If I can, I will also reduce the size of the map (model compression with MdlVis and MdlSsuisher, sounds compression with Sony Acid Pro and Blp compression with Warcraft 3 Viewer). Models seems to be "raw", without any squish and clean.
Map size really isn't an issue IMO. It's what, 4 megs? Max map size is 8 megs now.
I know this. But if i can reduce the size, it will be better anyway ;) But my priority will be the triggers, of course.
Edit: woooot. The map uses gui global variables, no VJass, etc... I will have a lot to do to improve this. It will be fun!
Rust_Knight
17-11-09, 13:53
So will you add your marine model to the next release? ^^
Suggestions allowed? If not then i'm sorry, Well i think there should be some new marine classes.
Gentlemen,
First of all, i will:
-Enlight the map (done: -400 ko)
-Fix known bugs (not done at all)
-Convert all triggers to something more...mmm...decent. 1.5c uses pure jass, no VJass. So triggers are simply...***ing hard to read. (currently being done)
-Use standards of VJass such as 0 Gui global variables, use libraries like SpellEvent, TimerUtils, GroupUtils, Table, and using Scopes, Libraries and Struct to make the map easier to read (currently being done)
This should take a lot of times, simply because the triggers are now really old, using return bug, TriggerSleepAction and PolledWait (grrrrrr^^) etc. some weeks, i think (cause I got studies, work, girl and friends :p)
THEN and only then, after a first beta will be proposed, we will be able to speak about suggestions. I enjoy works on a map and add suggestions of people, but for this one, I will need some time to rebuilt all triggers which are especially...outdated^^
Putting in a vote against new Marine skins that have different guns. I always liked the simplicity of them (almost) all having guns that looked the same.
sleepingferret
17-11-09, 18:04
Different skins just means greater map size, for something as minor as the marines.... spend the few extra KB somewhere else if you have to/want to add anything else.
And as far as different "classes":
1) the damn Black Hawk is full, so it'd require a re-programming of the pick system to even add more
2) the "classes" are all USMC MOS. And yes even the Delta Operator technically is a USMC MOS. The 1st SFOD-D is technically broken into 3 divisions, the Delta Rangers (primary recruits come from the US Army 75th Ranger regiment), the Delta Marines, and Delta Air Force (which is the primary transport wing, modern day surveillance assistance with use of modern day unmanned aircraft, satellite support, etc of the entire 1st SFOD-D; aside from the the US Army's Special Operation Aviation Regiment, the 160th SOAR which has assisted the 1st SFOD-D on occasion). Although technically D-Boys are still like any other solider, while part of Delta training is weapons of basically any kind (worldwide), they still all have individual specialized MOS. So for example one could technically be a Delta Sniper, even though you are fully qualified to use an assault rifle, a machine gun, etc; your primary assigned role is a sniper.
Right now the project is mostly in need of people willing to do bug fixes, not feature changes, the project also needs skilled and willing map developers to help verify any rumored bugs or missing features that are supposedly already in existence.
There are a few features that I believe should be changed, but those can be held until all the bug fixes are sorted and discussed later. I'd also like to see definitive confirmation that all current game play content is functional as was intended.
New models etc; as I have said: it is far to be my objective. Anyway if one day I wanted to add some new models, it would be with ingame textures.
Maybe I will modify the current models to use ingame textures anyway. But at the moment I have spent 400 kb only by reducing quality of textures -and the difference is not visible for our eyes in Warcraft ^^.
1)-True, even if a new pick system is real simple to do. But, an other time, it is not my current objective to change NOTD.
2) I'm actually a noob on the US Army :(
So, I do what I have proposed: I'm fixing bugs. But to fix bugs, I need this complete system change.
Its currently being done, but very long. I have already spent 6 hours on this.
New libraries (not mine) used:
-UnitIndexingUtils (required by other libraries)
-Stack (required by other libraries)
-SoundUtils (Lighter and Faster than the old functions used in 1.5c to play 3D sounds)
-SpellEvent (Faster system to check all triggers executed when a unit cast a spell)
-Table (Not used now, but I saw Gamecache in the 1.5c, it should be usefull)
-BoundSentinel (Prevent crashes from SetUnitX and SetUnitY functions)
-TimerUtils (RedFavor: the fastest timer functions, I use them to replace all the TriggerSleepAction and PolledWait used in 1.5c which are not leakless, and, worst, really not precise)
-GroupUtils (To use groups without leaks)
-TerrainPathability (To check terrain)
-AbilityPreload (To remove the leaks caused by the first time an ability is added on a unit)
-IntuitiveBuffSystem (Not used now, I dont think I will use it, but...Its a bit faster than the old system which uses buffs as abilities)
Changes I have already made:
-Added Global Variables, but not in Gui, to the instant events (without wait/timers etc, with variables such as TmpUnit, TmpPlayer etc.) They allows to avoid Gui use, and more, not to create local variables when they are not needed.
-New functions for: BlackHawk Fx, Camera, Lightning, Weather, Nightvisions, Sounds, EarShocks, effects with a duration, lightning, texts and deases
-All EVENT_PLAYER_HERO_SKILL are now in only one trigger with more elsif than in 1.5c (less checks when a hero learns a skill)
-New triggers about heroes already made for: Flamethrower-Navy Corpsman-Combat Engineer.
sleepingferret
17-11-09, 19:05
USMC = United States Marine Corps noob :P
DM,DO and IUL skills triggers rebuilt.
This game is crazy made xD.
MissyMichelle
18-11-09, 01:39
jk2pach : check pm
MarineInfantry
18-11-09, 05:08
Wow man, we're having lots of people take over NOTD: AM and update/fix it. hopefully jk2pach's version will be awesome ;P
jk2pach: Here's my opinion (and I'd love to talk more in depth with you... my msn is vjain8905 (at) gmail.com).
The map is near finished. All that needs to be fixed are various crashes + balance issues. I talked w/ Jason (the previous owner of NotD: AM) about this and he believed that 1.6 should be the FINAL version, and at the moment, TOA's version is closest to being considered Complete.
Wouldn't it be better to take the concept on a new map?
~VJ
1.6 is the final... Then i wish that it would be the best version..
There is np on 1.6=last version.
I'm simply updating outdated triggers, the gampleay should not suffer from that -excepted from minor things.
Some things will need changes, because 1.5c has different spells for example than 1.5dbeta8 (ie wp for the FO, etc...)
Vjain, I can not be sure about my presence on msn :-( I'd like you to PM me if needed, I'm sorry, but it's impossible for me to stay online (msn) , the conversation would be disrupted every 2 minutes.
sleepingferret
18-11-09, 07:34
Major version # change = you did something worthwhile. While bug fixes are "worthwhile", IMO...it'd take 99.9% grade of error free to change the version to 1.6 over it.
Best case scenario use 1.5 to fix the damn bugs and the release of 1.6 to change a few things and maybe let the WC3 era go out with a big bang by the time SC2 gets here.
Well actually i'm simply makin a 1.5c-updated
I'm not sure to understand you, because of my ultra good skill in English (:p)
Do you mean I finally should not work on NOTD? If it is the case...It's really not a problem for me. I have my own RPG project to rebuild, as usual (Restricted Complex 601 on TheHiveWorkshop)
I have learnt what in NOTD enjoy players, (complexity, fast load time, fast game, "diversity" in quests) so I simply have to adapat this on my RPG. And I have a lot to do.
Simply say me if:
-yes I work on NOTD
-no I dont work on NOTD
Yes, work on NotD.
In my opinion, just fix the map up (the fatals for the most part, and the bugs listed above). Maybe incorporate some of TheOnlyAce's fixes.
In my opinion, the only thing keeping NotD: AM to be a finished project is the bugs + fatals. If you manage to get a STABLE version (non crashing), I would most definitely host it on my bots.
~VJ
Aye aye, sir. So I will continue to work on NOTD....
After this stupid simulation about marketing I'm doing in my school.
USA are the Motherhouse of your compagny, but we are trying to sell rollers in Africa :O :D
MissyMichelle
18-11-09, 10:51
col+nm saving, shiva. what other fix ?
md5, c&m, 0,0, contact, em,
at best i can say is that his version is the closest to be considered ~~balance~~~~
What about the FO skills ? In 1.5c the FO uses demolitions skills :O
More: the save/load system in 1.5c is outdated. I'd prefer use a new one, even if it implicates for all players to start again. (And after all due to ultra high ranks now, I think its not a problem)
i don't agree to the new save/load system.
Hmmm i worked my ass off to get to Lt.Col but i do agree about the new code system...Not really happy about it but whatever.Low SR means less chance for people to get killed and a lot less slacking :)
The only thing bugging me is crappy ms
MarineInfantry
18-11-09, 22:39
Heh. I worked hard to get Captain and it all goes away. Fine with me cuz i'll be able to be private and have ultra-1337 health ;D, low sr is good..... the only real cons is only roflman,nc, and firebat and SLOOOOOOOOOOOOOOOOOOOW ms
I speak about this because:
1-Present code is hacked on boards like W3CEdit
2-Present code uses, for medals, the gamecache=>u lose ur computer, bye medal.
I mean of course, in 1.5c
1. Even if you change the code system there will always be code genners. Delaying the time taking for a new code gen isnt worth it if everyone else loses their code... so it punishes non-genners more.
2. I've lost my computer and still loaded my old codes exactly as they were before...wut?
I speak about the medals you will earn at a game start, no about those you already have.
MissyMichelle
19-11-09, 03:31
...... lol....
so you are saying if you lose your computer, existing medals points disappear along with it eh.
cause if the line above does not happens, then medal award message wont.
you sure you are not trying too hard that you are going haywire.
for example
Medal of Honor
if GetStoredInteger(udg_MedalCache,I2S(id),"10")<6 and udg_MedalAwarded[(id*100)+10]==0 then
if kills>=450 and KillHitsRatio>16.0 and udg_ServiceMedalBoolean[4] and udg_MissionsCompleted>2 and GetRandomInt(0,2)==1 then
set udg_MedalAwarded[(id*100)+10] = 1
call StoreInteger(udg_MedalCache,I2S(id),"10",GetStoredInteger(udg_MedalCache,I2S(id),"10")+1)
elseif GetRandomInt(1,15-tierpenalty)==1 then
call StoreInteger(udg_MedalCache,I2S(id),"10",GetStoredInteger(udg_MedalCache,I2S(id),"10")-1)
endif
elseif GetStoredInteger(udg_MedalCache,I2S(id),"10")==7 then
set medalcount=medalcount+1
-or you read it as-
Medal of Honor
if -loaded code integer medal points is less than 6, medal awarded for moh is 0 then
while play if blah blah blah and all requirements is met,
set medal point award + 1
or
while playing if blah blah blah and any requirement is failed
set medal point award - 1
if -loaded code integer medal points = 7
set medalcount + 1
unless you trying to say, after you load your code,
notdmap/wc3 will search the computer for the stored integerout and give you the medal award message !!
if you really think you are right, maybe i can post out my medal awarding codes for you to try.
we can even get volunteers.
cryowraith
19-11-09, 07:16
The game uses gamecache to temp store medals, etc... Which those values will be included in the save code when the player saves. So you will get your medals even when you play on another computer, provided you load the code.
It is true that if your computer crashes when the game is running (before you save), you will lose any earned medal points and such. It is also true that you lose them because you didnt save your code!
Anyway back on topic. I think your priority should be like this:
1. Fixing all known fatal issues (which FIXED version has done)
2. Fixing return bug
3. Fixing any other non-intended bug
4. Reducing map size, increasing speed
5. Balancing, new features, new code system (the new code system can be implemented any time, but it is not that important of an issue yet)
6. New models and anything aesthetic/graphic related.
sleepingferret
19-11-09, 07:23
More: the save/load system in 1.5c is outdated. I'd prefer use a new one, even if it implicates for all players to start again. (And after all due to ultra high ranks now, I think its not a problem)
You mess with the save/load system, you are fired. Aza messed with it enough. While it will always have security loopholes and people will always break the damn thing no matter how many times you re-write it. The game has progressed far enough, and there is no justifiable reason to redo it now.
cryowraith
19-11-09, 07:37
You mess with the save/load system, you are fired. Aza messed with it enough. While it will always have security loopholes and people will always break the damn thing no matter how many times you re-write it. The game has progressed far enough, and there is no justifiable reason to redo it now.
I beg to differ. Loophole is one thing; leaking your whole security system is another. Say a bank that leaked their security system on the internet = easy target for robbers. There are so many edited maps out there that are able to gen codes, even I myself made one. And I could edit almost anything in my code, from exp to combat readiness to medal points... You get the idea.
But I do think it is not necessary as of now. Perhaps when new features are implemented or at least until all bugs are fixed.
He can make a new save system. I'll crack it in under 12 hours. Most of the time will just be spent on actually finding where the security systems are in place.
For instance, if I wanted to make myself have 99999 exp, one way of doing so would be...
By making a trigger which adds that much exp. Steps to do so
1. Remove securities (I'll only name 2, but there are more: max exp in game 3k, can't save in single player)
2. Add trigger to add experience
3. Voila.
Map protection is a joke in WC3. Even Icefrog himself admits this. The only real thing protection does is remove nice names for trigger, instead of Intialize_Wave01 it would be something like T05 or something random (depends on the "protection" program you use).
Here is what redoing the save system would do.
1. Piss off legit players
2. Cause code genners to go to a hacking site and request for the map to be hacked
3. Or they'll just alter the map themselves.
4. Waste Time better spent on working on the content of the map. Since that is, and what should always be, the focus. All you can really do is ignore cheaters/hackers/genners and TK'ers and such and refuse to play with them. If you ban them, all they need to do is change name or IP. One system that "could" work is to have the save system integrated into my host bots, but then that would disallow playing outside the bot, and would actually be detrimental to the community.
~VJ
sleepingferret
19-11-09, 09:24
Bank security systems are even a joke to PROFESSIONAL HACKERS, and not your average everyday wannabe script kiddie wannabe living in his mom's basement. But we're not discussing bank security systems, the security systems at the NSA, the CIA, the FBI, etc etc, are we?
We're talking about a save/load system built into a map made for a game. The map protection system for WC3 is inherently weak, therefore it doesn't matter what you do. That's why, the community itself "police's" its own players and the experienced, long time members know how to quickly and easily spot a maphacker, code genner, etc etc, long before anyone asks for a -showstats. Although a -showstats is often a dead give away (which is why medal requirements and such were never really publicly released for a long time).
ANY CHANGES to the save/load system are not authorized nor supported; nor was there ever discussion of ever changing the damn thing since Aza changed it last. And there shall NOT be anymore of it now.
MissyMichelle
19-11-09, 10:47
anyway, fixing the return bug, making notdfixed or 1.5c work on 1.24 is done.
just that it is resulting in function errors.
no idea if the mapeditor would continue working on it since he is short of time nowadays
cryowraith
19-11-09, 11:16
I never said war3's map protection is good. They were never meant to be protected anyway. Of course with some tools and some programming knowledge you could easily crack open any "protected" maps, but not all players have programming knowledge. You might know how to crack it, but try asking someone who has trouble figuring out how to "install" this map. What is the point of the code system when you can VERY EASILY generate your own code. Are you sure legit players don't feel extremely stupid because they had to play over 1000 games to get to a 100k exp, where as a code genner can get 100k exp by typing a few words. And smart code genners knows how to play the game well because they had played 300+ games as well. Compare them like this, and you find the last 7000 games of a legit player to be absolutely useless.
Wouldn't that piss legit players?
Wouldn't that make the game have less (new) players?
Wouldn't that make the game to have less re-playability?
Wouldn't that take away the fun of hosting game after game so that I could reach a higher rank to use that new mos?
Wouldn't that beat the whole idea of save/load code systems?
Well you're the owner/boss, you decide what to do about your map/system. I'm just voicing my opinion.
sleepingferret
20-11-09, 02:06
Getting "quick XP" is easy, I can do that with solo games and could get a 72% CR max'd XP 0 medal code very easily, and technically it'd be legit. It'd be the worst case of save whoring ever, but it'd work.
Save whoring has always and will always be a bad thing to do, and therefore yet another reason NOT to change to save/load system.
The game as it stands uses a rank based unlock system for classes, which for it's current setup and learning curve is probably for the best. Future projects will not necessarily use the same rank based model, as it is not necessarily "realistic" but all it does is promote save whoring and bad players.
TheOnlyAce
20-11-09, 10:44
Ok so i'm more or less done with my end of year exams for uni as of today (WOOOOOOHOOOOOOOOOOO!!!!!!!!) and i've got some time off from work, so i'm back. Once again guys, sorry i haven't been working on the map, but as much as i feel i have a responsibility to this game to get it done, i have a much greater responsibility to my job, to my studies and to my social life. Keep in mind i've had to learn JASS on my own from scratch for this project and i learned only what i needed to get things done, so to port the code, i need to do a ton of reading, learning about something that i really don't like (JASS blows) so it does go fairly slowly. On a side note, why the fuck doesn't the World Editor come with info on how to actually make shit other than in GUI (the GUI being slow, annoying and irritating to use, partly because one can type much faster than one can click from scroll-down lists that go on forever and partly because the GUI seems to require a lot more work to get anything done mapwise as well as being less flexible).
First, the debate about the save code system. The unwavering answer: no do not change the codes. Change it and you will KILL NOTD:AM, at least, your own version of NOTD:AM. I was around for the first wipe. It annihilated about 60% of the player base, most of the remaining players being the newer players who hadn't lost much in the wipe. This time round, i suspect it will be worse. I know its an easier fix to simply make a new code system, but its not a viable one in terms of keeping the game alive. It has been one of the biggest problems i had in porting the code to WC3 1.24. If it's not doable to port the code system, i'd rather stick with Beta 8 and make that the official finished version, despite the bugs and fatals and incomplete work on LC and Containment, than to make a wipe. That's how determined i am on keeping the code system. You should probably think along those lines, a code wipe is a definite 'no'.
Nothing would be worse to the player base, than wiping codes. Sure, everyone can earn our codes back. They can get their XP back, our Medals, etc. I mean they did it once before and assuming it wasn't a fluke the first time, they can do it again. The problem is not that they CAN'T it's that they don't WANT to. Never forget that the point of this game is to have fun, and it's not much fun to have your XP and medals arbitrarily wiped because its easier. Can you imagine what would happen in something like WoW if a bug were discovered and Blizzard's solution was to wipe everyone's characters and make them start at lvl 1, with basic gear. It's roughly the same principle. Worse even, because in NOTD:AM, acquiring the XP and the medals isn't what gives the game its replayability.
Also, never factor code genner's into your reasoning. The more popular a map is, the faster it will be hacked. You must accept the fact that there will be code genners and there's nothing you can do about it in the editor, before you work on any map in wc3. Worst comes to worse, if by some manner, a map isn't at all openable, not even the JASS (i'm not even sure if this is possible, but speaking hypothetically), they can just brute force the hash code.
Second, the state of the 1.5d beta project. My project aims to extend the game beyond where Az left it, but its pretty much at the same impasse as the 1.5c Fixed project in the sense that the WC3 1.24 patch requires a removing of the return bug. While i've made some headway in this, admittedly, it hasn't been as much as i've hoped. I'd be happy to collaborate with you in this regard, however i'm still playing catchup in JASS since the 1.24 patch, so you'll have to bear with me. PM me if you're interested.
TheOnlyAce
20-11-09, 11:02
I speak about this because:
1-Present code is hacked on boards like W3CEdit
2-Present code uses, for medals, the gamecache=>u lose ur computer, bye medal.
I mean of course, in 1.5c
No, the code itself stores the medal points as well as the medals. My code is living proof of this as i earned all my medals on my other computer and i now use this computer and have all medals as normal.
I think the problem is you've assumed that medal points are not stored in the code. With GameCache, if i remember correctly from what i read a few months ago, it was possible to store information from one game to the next. However, there's some flaws in your theory:
A) I don't think it would carry over once WC3 has been shut down. Information would be stored in the WC3 memory which would be wiped as soon as WC3 is shutdown. Which would mean medals are only earnable in one session of gaming.
B) The medal code system stores the points itself and loads them up on loading. If the game used the GameCache to do this, the save code would not need to store the info.
Medal points and info are only temporarily stored in the gamecache, the game save code does the rest.
So i will try to keep the save/load.
But i still want to improve the other triggers, first to make them easier to read.
In 1.5c, all skills of each heroes are all made in one only trigger. I have destroyed this way to present skills, and now, one skill= one trigger. Far easier to read.
I continue to remove all pooled wait I see. Now each (call PolledWait() is replaced with timer and structs. I know its VJass, so that not all map makers can understand how its work, but at least, Vjass is really powerfull and fast to learn.
I replace trigger after trigger the call of gamecache by the use of the Tables of Vexorian: they uses hashtable and are faster to use. I use TimerUtils, which is really faster than the use of blizzard basic timers.
I replace all locations (like udg_mypoint or local location l) by reals (x and y) tor reduce leaks: the only way were point is compulsory is to get the heigh of a location (GetLocationZ), but now we have the native GetSpellTargetX and GetSpellTargetY, points are outdated in NOTD.
I removed all groups used as local variables, for instant version, and use GroupUtils which has a global group and refresh functions: faster, less leak.
Some little things are changed in the nature of the triggers, such as the Artillery system, because he was really horrible in 1.5c
Same for the Airstrike/Gunship Supports. They will be a bit less beautifull as in 1.5c, but leakless: in 1.5c or d, when you call airstrike, the CPU needs to work hard. Not with my code, cause I use struct and TimerUtils.
I do not use the sounds function of 1.5c anymore, because the library SoundsUtils is faster.
Etc...
So i do not want to say I will make the best/final version or anything like this, I simply will propose it when it's finished. Then and only then, if NOTD still exist and my version is approved, I will listen to the members suggestions in term of balance, skills etc.
Ace:
I'm interested to see how you make code compatible for 1.24b. Do you still use gamecache, or Hashtable?
Here is an example of my work: the new FireMission/TOTMission system:
library FireMission initializer init requires Table, TimerUtils, BoundSentinel,SoundUtils,TextFunction,CameraFuncti on
//=================================================
globals
integer ArtilleryShells
real ArtyAccuracy
integer ShellsPerShot
real DeliveryTime
real ArtyDamage
private constant integer DUMMY_GROUNDCIRCLE = 'e005'
constant integer DUMMY_DANGERZONE = 'n00P'
constant integer DUMMY_FIREMISSIONDAMAGE = 'o007'
private constant string FXSHELL ="Units\\Demon\\Infernal\\InfernalBirth.mdl"
endglobals
//=================================================
private keyword s_FireMission
globals
private HandleTable TABLE
endglobals
//=================================================
private function init takes nothing returns nothing
set TABLE = HandleTable.create()
endfunction
//=================================================
private function RunWait takes nothing returns nothing
local s_FireMission g = GetTimerData( GetExpiredTimer() )
call g.UpdateWait()
endfunction
//=================================================
private function RunFire takes nothing returns nothing
local s_FireMission g = GetTimerData( GetExpiredTimer() )
call g.UpdateFire()
endfunction
//=================================================
private struct s_FireMission
private unit caster
private player owner = null
private timer tiwait = null
private timer tifire = null
private integer i = 0
private real targetx = 0.
private real targety = 0.
private real durationbarrage = 0.
private integer durationwait
private integer waitdone = 0
private boolean firemission = false
private boolean totmission = false
//=================================================
method UpdateFire takes nothing returns nothing
if .i < .durationbarrage then
set .i = .i + 1
if .firemission == true and .totmission == false then
set TmpX = .targetx+GetRandomReal(-ArtyAccuracy,ArtyAccuracy)
set TmpY = .targety+GetRandomReal(-ArtyAccuracy,ArtyAccuracy)
elseif .firemission == false and .totmission == true then
set TmpReal = GetRandomReal(0.,360.)
set TmpInteger = GetRandomInt(1500,3500)
set TmpX = .targetx+TmpInteger*Cos(TmpReal*bj_DEGTORAD)
set TmpY = .targety+TmpInteger*Sin(TmpReal*bj_DEGTORAD)
endif
call DestroyEffect(AddSpecialEffect(FXSHELL,TmpX,TmpY ))
set TmpDummy = CreateUnit(.owner,DUMMY_FIREMISSIONDAMAGE,TmpX,Tmp Y,0.0)
call UnitApplyTimedLife(TmpDummy,'BTLF',0.10)
else
if .totmission == true then
call CameraSetTargetNoise(5.0,0.03)
endif
call .Release()
endif
endmethod
//=================================================
method UpdateWait takes nothing returns nothing
if .i < .durationwait then
set .i = .i + 1
else
set .waitdone = .waitdone + 1
call RunSound(SOUND_MISSILE)
if .waitdone == 1 then
call .ReStartWait()
elseif .waitdone == 2 then
call .RunShells()
endif
endif
endmethod
//=================================================
method RunShells takes nothing returns nothing
set .i = 0
if GetRandomInt(0,1)==1 then
call RunSoundAtPoint(SOUND_DEATH1,.targetx,.targety,0.)
else
call RunSoundAtPoint(SOUND_DEATH2,.targetx,.targety,0.)
endif
if .firemission == true then
call EarShockArea(TmpX,TmpY,800)
endif
if .totmission == true then
call ClearNoise()
endif
set .i = 0
set .tifire = NewTimer()
call SetTimerData( .tifire, this )
call TimerStart( .tifire, 1., true, function RunFire )
endmethod
//=================================================
method ReStartWait takes nothing returns nothing
call ReleaseTimer(.tiwait)
set .durationwait = 3
set .i = 0
if .totmission == true then
call SetNoise(4.)
endif
set .tiwait = NewTimer()
call SetTimerData( .tiwait, this )
call TimerStart( .tiwait, 1., true, function RunWait )
endmethod
//=================================================
method LinkTotMission takes real x, real y returns nothing
if ArtilleryShells< 60 then
set ArtilleryShells=0
call GeneralText(10.0, "All Artillery Shells have been depleted." )
call .Release()
return
endif
set .targetx = x
set .targety = y
set .owner = GetOwningPlayer(.caster)
set ArtilleryShells = ArtilleryShells-60
call PingMinimapEx(.targetx,.targety,10.,204,197,115, false)
call DisplayTimedTextToPlayer(.owner,0.,0., 2.0, "Shells Remaining: " + I2S(ArtilleryShells) )
call GeneralText(2.5,"|cffcd950cFire Direction Control|r : Splash!")
set .waitdone = 0
set .durationwait = 7
set .durationbarrage = 15
set .firemission = false
set .totmission = true
set .tiwait = NewTimer()
call SetTimerData( .tiwait, this )
call TimerStart( .tiwait, 1., true, function RunWait )
endmethod
//=================================================
method LinkFireMission takes real x, real y returns nothing
set .targetx = x
set .targety = y
set .owner = GetOwningPlayer(.caster)
if ShellsPerShot <=0 then
call DisplayTimedTextToPlayer(.owner,0.,0., 2.0, "Shells per mission are set on 0. Mission cancelled.")
call .Release()
return
elseif ArtilleryShells>0 then
set ArtilleryShells=ArtilleryShells-ShellsPerShot
call DisplayTimedTextToPlayer(.owner,0.,0., 2.0, "Shells Remaining: " + I2S(ArtilleryShells) )
else
set ArtilleryShells=0
call GeneralText(10.0, "All Artillery Shells have been depleted." )
call .Release()
return
endif
if ShellsPerShot>15 then
set .durationbarrage=4.5
elseif ShellsPerShot>10 then
set .durationbarrage=4.0
elseif ShellsPerShot>5 then
set .durationbarrage=3.0
endif
set TmpDummy = CreateUnit(.owner,DUMMY_GROUNDCIRCLE,.targetx,.tar gety,0.0)
call UnitApplyTimedLife(TmpDummy,'Bhwd',3.5+DeliveryTim e)
set TmpDummy = CreateUnit(Player(14),DUMMY_DANGERZONE,.targetx,.t argety,0.0)
call UnitApplyTimedLife(TmpDummy,'BTLF',12)
call PingMinimapEx(.targetx,.targety, 2.0, 204, 196, 115, false)
if GetRandomInt(1,3)==1 then
call FieldChat(.caster,5, PlayerColor[GetPlayerId(.owner)] + GetPlayerName(.owner) + "|r : Splash!" )
endif
set .firemission = true
set .totmission = false
set .waitdone = 0
set .durationwait = R2I(DeliveryTime-3.0)
set .tiwait = NewTimer()
call SetTimerData( .tiwait, this )
call TimerStart( .tiwait, 1., true, function RunWait )
endmethod
//=================================================
method Release takes nothing returns nothing
call ReleaseTimer(.tifire)
call ReleaseTimer(.tiwait)
set .tifire = null
set .tiwait = null
set .firemission = false
set .totmission = false
set .targetx = 0.
set .targety = 0.
set .owner = null
endmethod
//=================================================
//Constructor
static method create takes unit caster returns s_FireMission
local s_FireMission this = s_FireMission.allocate()
set this.caster = caster
return this
endmethod
//=================================================
endstruct
//=================================================
private function i2struct takes integer i returns s_FireMission
return i
endfunction
//=================================================
function FireMission takes unit caster returns s_FireMission
if( caster==null )then
return 0
endif
if( not TABLE.exists(caster) )then
set TABLE[caster] = s_FireMission.create(caster)
endif
return i2struct(TABLE[caster])
endfunction
endlibrary
scope firemission initializer init
//=================================================
globals
private constant integer SPELL1 = 'S000'
private constant integer SPELL2 = 'S003'
endglobals
//=================================================
private function Actions takes nothing returns nothing
call FireMission(SpellEvent.CastingUnit).LinkFireMissio n(SpellEvent.TargetX,SpellEvent.TargetY)
endfunction
//=================================================
public function init takes nothing returns nothing
call RegisterSpellFinishResponse(SPELL1, Actions)
call RegisterSpellFinishResponse(SPELL2, Actions)
endfunction
//=================================================
endscope
scope totmission initializer init
//=================================================
globals
private constant integer SPELL = 'A02U'
endglobals
//=================================================
private function Actions takes nothing returns nothing
set TmpUnit = SpellEvent.CastingUnit
set TmpX = GetUnitX(TmpUnit)
set TmpY = GetUnitY(TmpUnit)
call FireMission(TmpUnit).LinkTotMission(TmpX,TmpY)
endfunction
//=================================================
public function init takes nothing returns nothing
call RegisterSpellFinishResponse(SPELL, Actions)
endfunction
//=================================================
endscope
scope firemissiondamage initializer init
//=================================================
globals
private constant string FX = "Objects\\Spawnmodels\\Other\\NeutralBuildingExplos ion\\NeutralBuildingExplosion.mdl"
private constant real AOE = 280.
endglobals
//=================================================
function DamageTree takes nothing returns boolean
call UnitDamageTarget(TmpUnit,GetEnumDestructable(),0.5 *ArtyDamage,false,false,ATTACK_TYPE_NORMAL,DAMAGE_ TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
return true
endfunction
//=================================================
function KillItem takes nothing returns boolean
call SetWidgetLife(GetEnumItem(),0.0)
return true
endfunction
//=================================================
private function Conditions takes nothing returns boolean
local integer i = 0
set TmpUnit = GetTriggerUnit()
if GetUnitTypeId(TmpUnit)==DUMMY_FIREMISSIONDAMAGE then
set TmpPlayer = GetOwningPlayer(TmpUnit)
set TmpX = GetUnitX(TmpUnit)
set TmpY = GetUnitY(TmpUnit)
call DestroyEffect(AddSpecialEffect(FX,TmpX,TmpY))
call UnitDamageAll(TmpUnit,TmpX,TmpY,AOE,ArtyDamage)
set TmpRect = Rect(TmpX-AOE,TmpY-AOE,TmpX+AOE,TmpY+AOE)
call EnumDestructablesInRect(TmpRect,Filter(function DamageTree),null)
call EnumItemsInRect(TmpRect,Filter(function KillItem),null )
call RemoveRect(TmpRect)
endif
return false
endfunction
//=================================================
public function init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition(t,Condition( function Conditions ))
endfunction
//=================================================
endscope
By the way, Ace, if you could give me the update log between 1.5c and your 1.5dbeta8, this could be great.
Or, if you want, gimme the open source of your 1.5db8, this could be great !
audiophile
10-12-09, 20:04
Just make a list what needs to be fixed and sticky it.
To all being said above i can add that tooltips are still wrong concerning rank skills (x-button). If you dont meet the required rank it says: " required: colonel" which is wrong. I hope you get what i mean, minor thing though.
I d love to see a stable map (including md-5 mines); good luck!!
TheOnlyAce
11-12-09, 07:22
Yeah that was a simple problem with the one of widgetizer options messing with that. It's why i never got the problem in one of my personal tests. Fixed in beta 9.
audiophile
11-12-09, 12:11
Another thing: why does FO's orbital artillery deal damage to zombies and marines but does not destroy item crates?
MarineInfantry
20-12-09, 01:10
Ub3r items?
Wedge_Antilles
20-12-09, 12:18
shhhhh. OA is cool as it is now. Do do not dis the OA. Hail to the OA!
Powered by vBulletin™ Version 4.0.0 Beta 3 Copyright © 2012 vBulletin Solutions, Inc. All rights