![]() |
#11
|
|||
|
|||
![]() Quote:
Quote:
![]() there are two modes for balance either by fighter ratio difference or by fighter count difference. Default values are these:
collecting stats for deaths(ondead events) is a little bit more tricky, for example you damaged a ship, its burning but not dead yet, you exit and changed side, than the ship died, game's onActorDead event triggers and you seem to kill your own ship, because the parameters on this event are just references which are up to date. The same is true for reverse and opens a door for easy unfair score gain by attacking your own side, with missions allowing side change, in script there is no easy way to know "the initiators side(army) when the related events occured" causing another event even if you recorded army change times for each player manually and checked them with event times, This is also much hard&complex to write and very cpu intensive compared to current stat collection system. The right way to go this far in my opinion is in c++ not managed c#. The game also has a nice score system for the kills in which your score increases even depending on how well you hit a target. (i got 7 score points when i killed a ship by dropping a bomb to water, a few meters next to it but it gave 17 score points when i dropped the bomb right into its belly) It also seems to resolve these conflicts. There's no need to do the same calculations on the script which the game already does, it could be a good idea to ask the devs for a tip or example about this. About different/variated stats: if you stop the battle, move the "StbVolcanicIslands2_playerstats_full.txt" and "StbVolcanicIslands2_playerstats_low.htm" files to another folder manually and restart the battle, it will create the stats from scratch. This way you can archive them daily/weekly or however you like and can give the player with most air kills a nick or award. etc. i'll write an example about the things like "tasks per placeEnters" shortly. Last edited by stillborn; 07-29-2011 at 03:07 PM. |
#12
|
|||
|
|||
![]()
Thanks a lot for all the answers.
This is how a path to cache looks C:\Documents and Settings\Администратор\Мои документы\1C SoftClub\il-2 sturmovik cliffs of dover\cache This is Russian WinServer 2003 x32, contains Cyrillic letters. Can this cause the problem? |
#13
|
|||
|
|||
![]() Quote:
i dont think its caused by Cyrillic letters, the cs files containing nonstandart chars are saved as utf8 by default unless you force them to save as ascii, i think its the Path.GetDirectoryName(System.Reflection.Assembly.G etExecutingAssembly().Location) command that returns something different in win server 2003. make sure you extracted the modified archive to "C:\Documents and Settings\Администратор\Мои документы\1C SoftClub\il-2 sturmovik cliffs of dover\missions\Multi\Dogfight\StbVolcanicIslands2\ " , not the one inside program files so "StbVolcanicIslands2.cs" file location should be like this: "C:\Documents and Settings\Администратор\Мои документы\1C SoftClub\il-2 sturmovik cliffs of dover\missions\Multi\Dogfight\StbVolcanicIslands2\ StbVolcanicIslands2.cs" Last edited by stillborn; 07-29-2011 at 04:21 PM. |
#14
|
|||
|
|||
![]()
here's a file explaining which types of damages goes where in stats htm
|
#15
|
|||
|
|||
![]()
Here is version 1.1
Changes:
StbViMission.dll must be in the folder where Launcher.exe is. You can put the "StbVi.cs" and "StbVi.mis" files anywhere you like and run the mission from there. If you want to edit the mission further, visual studio solution for the dll is in the second zip. Please turn on "Cannot Swith Planes" difficulty option when running this mission because Blues can get into He111s by pressing AltF1 but reds cant use Wellingtons. Btw it seems like game only lets me to load dlls from the folder where Launcher.exe is. I used "//$reference StbViMission.dll" for import at the top of the script. "Assembly.LoadFrom" and similar methods work fine but they are useless because i use this dll to define the class type of mission at the top. If you find a way to include folders with "//$reference" or another way to reference a dll from another folder (without editing an xml or ini, just from inside the mission script) please suggest. |
#16
|
|||
|
|||
![]()
You can give the path the the dll relative to the path with the launcher.exe, for example:
Code:
//$reference parts/il2dce/IL2DCE.Mission.dll |
#17
|
|||
|
|||
![]() Quote:
Your example naming seems to be identical to the namespaces you use, maybe i should wrap my custom class in a namespace according to the dlls folder (yes i havent used a namespace). or some kind of default compiler option for my net4.0 runtime is different and messing things up. |
#18
|
|||
|
|||
![]()
This is really strange.
http://code.google.com/p/il2dce/sour....GameServer.cs I can load assemblies with the following script. However I get a exception because Core is not marked as serializable. Do you have a similar problem and have to mark classes you use within a mission as serializable? |
#19
|
|||
|
|||
![]()
I guess its good to access "imported objects with //$reference" after everything is loaded and initialized. From what i see things differ a bit before and after the initialization of a mission. For example one strange thing i noticed is: The first version of this mission had "Assembly.GetExecutingAssembly().Location" command inside OnBattleStarted Method, which returned a path with "1cSoftClub" in it but the same command returns the launcher.exe path when used as a variable's default value at the top.
I never had an issue with serializability when both deriving the Mission class from a custom class and when using/accessing another class. if you are not saving your class or another object inside with its current state intentionally, probably something in the process of packing your dll and/or loading it requires serialization, to save or to send it somewhere in memory as a stream, etc. try using alternative approaches when importing/accessing your classes. Hope this helps. Btw i'm just curious, is there a specific purpose of importing gamePlay.dll via //$reference, which is as far as i know, identical to this Code:
using maddox.game; using maddox.game.play; ![]() |
#20
|
|||
|
|||
![]()
I had to import gamePlay.dll because I cast a IGamePlay object to GameDef. GameDef is defined within this assembly and is otherwhise not know. In fact this gives a lot of new possibilities because GameDef has some useful methods (like the Chat event).
With "using" you only don't need to write always the namespace before you access something of it but it doesn't load the assembly. |
![]() |
Thread Tools | |
Display Modes | |
|
|