Результаты поиска
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Not sure end date. But we make demo now for preview. About new panel I soon try upload more screenshots.
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
http://w4tweaks.ru/load/ here soon. Need more time for release

Добавлено (29.09.2014, 20:53)
---------------------------------------------

Добавлено (29.09.2014, 20:54)
---------------------------------------------
New Weapon Panel =)

 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11

Добавлено (05.10.2014, 21:19)
---------------------------------------------


This is screen from new Mission "Cocons Up"

When release this mission I put code in lua lessons and explain how it work. It should help beginners how to make own mission.

Добавлено (07.10.2014, 21:23)
---------------------------------------------


Cocons Up Test

 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
--Cocons Up
--Map by Alexbond

function Initialise()

    SendMessage("Commentary.NoDefault")
    bronzetime = (60 * 1000) * 9999
    silvertime = (60 * 1000) * 25
    goldtime = (60 * 1000) * 20

    SetData("Camera.StartOfTurnCamera","Default")
 
    SetData("Camera.Path.IgnoreInput", 1)    
 
    SetData("Mine.DudProbabilty", 0.1)
    SetData("Mine.MinFuse", 1000)
    SetData("Mine.MaxFuse", 5000)
    SetData("TurnTime", 0)
    SetData("RoundTime", 1500000)
    
    CrateCount = 0
    CratesCollected = false
    
    SetData("Camera.StartOfTurnCamera","Default")
    SetData("Camera.GameOverCamera", "Orbit")
    SendStringMessage("Camera.Disable", "Orbit") 
    SendStringMessage("Camera.Disable", "Blimp") 
    CrateSpawn()

    SetupWormsAndTeams()
    SetupInventories()
    Intro()
    --startt()

end

function SelectRandomWind()
   SetData("Wind.Speed", 0.0)
end

function SituationText()
    SetData("Text.TestComment", "It might be difficult situation for you!")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function SituationAnim()
    SendIntMessage("Worm.ResetAnim", 0)
    SetData("Worm.ScriptAnim", "Horror")
    SendIntMessage("Worm.QueueAnim", 0)
end

function Intro()
    CameraFly = 1
    SendMessage("EFMV.Start")
    StartTimer("SituationAnim", 10)
    StartTimer("SituationText", 1000)
    SetData("Camera.Path.Knots.Position", "Pos1")
SetData("Camera.Path.Knots.LookAt", "Look1")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro2", 4500)
end

function SpiderText()
    SetData("Text.TestComment", "Spider mom looks little hungry...")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function Intro2()
    CameraFly = 1
    StartTimer("SpiderText", 1500)
    SetData("Camera.Path.Knots.Position", "Pos2,Pos3")
SetData("Camera.Path.Knots.LookAt", "Look2")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 500)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro3", 4000)
end

function ExistText()
    SetData("Text.TestComment", "But exist exit from this situation")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function ExistAnim()
    SendIntMessage("Worm.ResetAnim", 0)
    SetData("Worm.ScriptAnim", "Angry3")
    SendIntMessage("Worm.QueueAnim", 0)
end

function Intro3()
    CameraFly = 1
    StartTimer("ExistText", 500)
ExistAnim()
    SetData("Camera.Path.Knots.Position", "Pos1")
SetData("Camera.Path.Knots.LookAt", "Look1")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro4", 3200)
end

function BabyText()
    SetData("Text.TestComment", "Colllect six spider babies...")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function BabyText2()
    SetData("Text.TestComment", "and bring them back to the mother!")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function Intro4()
    CameraFly = 1
BabyText()
    SetData("Camera.Path.Knots.Position", "Pos4")
SetData("Camera.Path.Knots.LookAt", "Crate1")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro4_1", 1000)
end

function Intro4_1()
    CameraFly = 1
    SetData("Camera.Path.Knots.Position", "Pos5")
SetData("Camera.Path.Knots.LookAt", "Crate2")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro4_2", 1000)
end

function Intro4_2()
    CameraFly = 1
    StartTimer("BabyText2", 500)
    SetData("Camera.Path.Knots.Position", "Pos6")
SetData("Camera.Path.Knots.LookAt", "Crate3")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro4_3", 1000)
end

function Intro4_3()
    CameraFly = 1
    SetData("Camera.Path.Knots.Position", "Pos7")
SetData("Camera.Path.Knots.LookAt", "Crate4")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro4_4", 1000)
end

function Intro4_4()
    CameraFly = 1
DinnerAnim()
    SetData("Camera.Path.Knots.Position", "Pos8")
SetData("Camera.Path.Knots.LookAt", "Crate5")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro4_5", 1000)
end

function Intro4_5()
    CameraFly = 1
    SetData("Camera.Path.Knots.Position", "Pos9")
SetData("Camera.Path.Knots.LookAt", "Crate6")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("Intro5", 1000)
end

function DinnerText()
    SetData("Text.TestComment", "Then maybe you not end as next dinner!")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function DinnerAnim()
    SendIntMessage("Worm.ResetAnim", 0)
    SetData("Worm.ScriptAnim", "Disbelief1")
    SendIntMessage("Worm.QueueAnim", 0)
end

function Intro5()
    CameraFly = 1
    StartTimer("DinnerText", 1000)
    SetData("Camera.Path.Knots.Position", "Pos1")
SetData("Camera.Path.Knots.LookAt", "Look1")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 0)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SendMessage("Camera.Path.Start")
CamLoop = StartTimer("startt", 3500)
end

function Spider()
    SetData("Text.TestComment", "It's time for dinner!")
    SetData("CommentaryPanel.Comment", "Text.TestComment")
    SendMessage("CommentaryPanel.ScriptText") 
end

function SpiderFailure()
    --CameraFly = 1
    SendMessage("EFMV.Start")
    StartTimer("Spider", 500)
    SetData("Camera.Path.Knots.Position", "Pos11,Pos12")
SetData("Camera.Path.Knots.LookAt", "Look2")
SetData("Camera.Path.Loop.Position", 0)
SetData("Camera.Path.Loop.LookAt", 0)
SetData("Camera.Path.Steps.Position", 250)
SetData("Camera.Path.Steps.LookAt", 0)
SetData("Camera.Path.Tension.Position", 0)
SetData("Camera.Path.Tension.LookAt", 0)
SetData("Camera.Path.IgnoreInput", 1) 
SendMessage("Camera.Path.Start")
StartTimer("End", 1500)
        --FailureMessages()
end

function End()
            SendMessage("GameLogic.Mission.Failure")
end

function CrateSpawn()
SetData("Crate.Spawn", "Crate1")
SetData("Crate.Type", "Weapon")
SetData("Crate.NumContents", 0)
SetData("Crate.Contents", "kWeaponBazooka")
SetData("Crate.Index", 1)
SetData("Crate.Pushable", 0)
    SetData("Crate.TeamDestructible", 10)
    SetData("Crate.TrackCam", 0)
    SendMessage("GameLogic.CreateCrate")

SetData("Crate.Spawn", "Crate2")
SetData("Crate.Type", "Weapon")
SetData("Crate.NumContents", 0)
SetData("Crate.Contents", "kWeaponBazooka")
SetData("Crate.Index", 2)
SetData("Crate.Pushable", 0)
    SetData("Crate.TeamDestructible", 10)
    SetData("Crate.TrackCam", 0)
    SendMessage("GameLogic.CreateCrate")

SetData("Crate.Spawn", "Crate3")
SetData("Crate.Type", "Weapon")
SetData("Crate.NumContents", 0)
SetData("Crate.Contents", "kWeaponBazooka")
SetData("Crate.Index", 3)
SetData("Crate.Pushable", 0)
    SetData("Crate.TeamDestructible", 10)
    SetData("Crate.TrackCam", 0)
    SendMessage("GameLogic.CreateCrate")

SetData("Crate.Spawn", "Crate4")
SetData("Crate.Type", "Weapon")
SetData("Crate.NumContents", 0)
SetData("Crate.Contents", "kWeaponBazooka")
SetData("Crate.Index", 4)
SetData("Crate.Pushable", 0)
    SetData("Crate.TeamDestructible", 10)
    SetData("Crate.TrackCam", 0)
    SendMessage("GameLogic.CreateCrate")

SetData("Crate.Spawn", "Crate5")
SetData("Crate.Type", "Weapon")
SetData("Crate.NumContents", 0)
SetData("Crate.Contents", "kWeaponBazooka")
SetData("Crate.Index", 5)
SetData("Crate.Pushable", 0)
    SetData("Crate.TeamDestructible", 10)
    SetData("Crate.TrackCam", 0)
    SendMessage("GameLogic.CreateCrate")

SetData("Crate.Spawn", "Crate6")
SetData("Crate.Type", "Weapon")
SetData("Crate.NumContents", 0)
SetData("Crate.Contents", "kWeaponBazooka")
SetData("Crate.Index", 6)
SetData("Crate.Pushable", 0)
    SetData("Crate.TeamDestructible", 10)
    SetData("Crate.TrackCam", 0)
    SendMessage("GameLogic.CreateCrate")
end

function Crate_Collected()
    CrateCount = CrateCount + 1
    SendMessage("Commentary.Clear")
    SendMessage("Commentary.NoDefault")
    DisplayCollectComment()
if CrateCount == 6 then
    WON()
end
end

function DisplayCollectComment()
   local Comment = { "That's it!", "Keep going!", "Just a few more!" }
   SendMessage("RandomNumber.Get")
   local RandomNumber = GetData("RandomNumber.Uint")
   local MyRandomNumber = math.mod(RandomNumber, 3) + 1
  -- SendMessage("Commentary.Clear")  
   SetData("Text.TestComment", Comment [MyRandomNumber])
   SetData("CommentaryPanel.Comment", "Text.TestComment")
   SetData("CommentaryPanel.Delay", 3000)
   SendMessage("CommentaryPanel.TimedText")
end

function startt()
    CameraFly = 0
    StartFirstTurn()
    SendMessage("EFMV.End")
end

function StartTurn()
    done_once_per_turn_functions = false
    SendMessage("Timer.StartHotSeatTimer")
    SendMessage("GameLogic.ActivateNextWorm")
    SendMessage("Weapon.Create")
    SetWind()
    SendMessage("GameLogic.Turn.Started")
    TurnStarted()
    RunAILogic()
else    
end

function StartFirstTurn()
   WaitUntilNoActivity = false
   SendMessage("Timer.StartGame")
   SendMessage("EFMV.End")
   StartTurn()
end

function Camera_Path_Stopped()
    if CameraFly == 1 then
        SendMessage("Commentary.Clear")
        CameraFly = 0
        CancelTimer(CamLoop)
        if TimerControl == 1 then
            CancelTimer(TextTime)
            TimerControl = 0
        end
        SendMessage("EFMV.End")
        StartFirstTurn()
    end
end

function TurnEnded()
    RoundTimeRemaining = GetData("RoundTimeRemaining")
    if (RoundTimeRemaining == 0 or RoundTimeRemaining < 0) and StartedSuddenDeath == false then
    SpiderFailure()
    end
    CheckOneTeamVictory()    
end

function CheckOneTeamVictory()
    SendMessage("WormManager.GetActiveTeamCount")
    TeamCount = GetData("TeamCount")
    if TeamCount == 0 then
SpiderFailure()
    else
    StartTurn()
    end
end

function FailureMessages()

    SendMessage("Commentary.Clear")
    SendMessage("Commentary.NoDefault")
    
    -- makes up a random number between 1 and 5
    SendMessage("RandomNumber.Get")
    RandomNumber = GetData("RandomNumber.Uint")
    MyRandomNumber = math.mod(RandomNumber, 5) + 1
   
    if MyRandomNumber == 1 then
        SetData("CommentaryPanel.Comment", "Miss.Generic.Lose1")
        SendMessage("CommentaryPanel.ScriptText")
    elseif MyRandomNumber == 2 then
        SetData("CommentaryPanel.Comment", "Miss.Generic.Lose2")
        SendMessage("CommentaryPanel.ScriptText")
    elseif MyRandomNumber == 3 then
        SetData("CommentaryPanel.Comment", "Miss.Generic.Lose3")
        SendMessage("CommentaryPanel.ScriptText") 
    elseif MyRandomNumber == 4 then
        SetData("CommentaryPanel.Comment", "Miss.Generic.Lose4")
        SendMessage("CommentaryPanel.ScriptText")
    elseif MyRandomNumber == 5 then
        SetData("CommentaryPanel.Comment", "Miss.Generic.Lose5")
        SendMessage("CommentaryPanel.ScriptText")        
    end
    
end

function WON()
    
    timetook = GetData("ElapsedRoundTime")
    
    if timetook < bronzetime then
        Movie = 1 
        if timetook < silvertime then
            Movie = 2
            if timetook < goldtime then
                Movie = 3                
            end
        end
    end
    
    
    if Movie == 1 then
        SetData("MCa.LastGameTime", 1)
        SetData("GameOver.AwardMovie","bronze")
    elseif Movie == 2 then
        SetData("MCa.LastGameTime", 2)
        SetData("GameOver.AwardMovie","silver")
    elseif Movie == 3 then
        SetData("MCa.LastGameTime", 3)
        SetData("GameOver.AwardMovie","gold")
    end
    
    SendMessage("GameLogic.Mission.Success")

end

function SetupWormsAndTeams()
    GM = QueryContainer("GM.GameInitData")
    lock, team = EditContainer("Team.Data00") 
    team.Active = true
    team.Name = GM.T1_Name
    team.FlagGfxName = GM.T1_Flag
    team.GraveIndex = GM.T1_Grave
    team.TeamColour = 0
    CloseContainer(lock)

    lock, worm = EditContainer("Worm.Data00") 
    worm.Active = true
    worm.Name = GM.T1_W1_Name
    worm.SfxBankName = GM.T1_Speech
    worm.Spawn = "Worm1"
    worm.Energy = 100
    worm.WeaponFuse = 3
    worm.WeaponIsBounceMax = false
    worm.TeamIndex = 0
    CloseContainer(lock) 

   SendMessage("WormManager.Reinitialise")
end

function SetupInventories()
    lock, inventory = EditContainer("Inventory.Team00")
    --inventory.Teleport = -1
    --inventory.Jetpack = -1
    inventory.Binoculars = -1
    inventory.Parachute = -1
    inventory.SkipGo = 0
    inventory.Surrender = 0
    CloseContainer(lock) 
end

Добавлено (10.10.2014, 00:55)
---------------------------------------------
I will update this post soon. With explanation how this script work.

 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
This check that StartTurn functions inside are initialised once per turn I guess. I never change this variable. It exist in standard function so better not touch this.
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
function DoPostActivity()
if done_once_per_turn_functions == true then
SendMessage("GameLogic.Turn.Ended")
TurnEnded()
else
-- Done only once
SendMessage("Worm.ApplyPoison")
SetData("DoubleDamage", 0)
DoOncePerTurnFunctions()
done_once_per_turn_functions = true
CheckActivity() -- in case an earthquake or similar was just started
end
end

This is for coordinate functions what happen once in turn. Example if worm check Double damage then set this to 0 after turn end.
This is also standard function in stdlib.lua liblary


Сообщение отредактировал Woitek - СБ, 11.10.2014, 16:36:26
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
function DisplayCollectComment()  --make function.
 local Comment = { "That's it!", "Keep going!", "Just a few more!" }  --Make local class(can be used only in this function) with 3 elements. 1,2,3.
 SendMessage("RandomNumber.Get")  --Send Message to game for get random number.
local RandomNumber = GetData("RandomNumber.Uint")  -- Give variable RandomNumber Random Uint number (0 to 4 294 967 295)
 local MyRandomNumber = math.mod(RandomNumber, 3) + 1  --In short. Give variable MyRandomNumber values 1-3.
SetData("Text.TestComment", Comment [MyRandomNumber])  --add to this Text.TestComment value from class Comment
SetData("CommentaryPanel.Comment", "Text.TestComment")  -- Add my text to commentary panel
SetData("CommentaryPanel.Delay", 3000)  -- Give panel 3 seconds delay
SendMessage("CommentaryPanel.TimedText")  --Run Panel and if time gone (3 seconds) then panel off
end --End function

Добавлено (12.10.2014, 14:28)
---------------------------------------------
This function  is called here so
function Crate_Collected() --If Crate collected then
    CrateCount = CrateCount + 1 --Count how many crates we collect
    SendMessage("Commentary.Clear")  --Clear other commentary
    SendMessage("Commentary.NoDefault") --Make Commentary NoDefaults like from crates.
    DisplayCollectComment()  --Display text from previous function. Example we collect crate and we get message "Keep going!"
if CrateCount == 6 then --If we collect total 6 crates then
    WON() --function WON()
end -- end if
end  --end function

 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
13.10.2014 was released first Demo of Worms 3D Complete Edition. Demo features:

New Deathmatch Challenges: 12, 13, 15, 17, 22 And DMX1
+ New Music
+ New Missions 1-6
+ New Rope Race Missions 1-7
+ 6 New Custom Challenges

It's small taste of this what will feature in full version =). Progress with full was very slow so we decide to put demo version.

http://w4tweaks.ru/load/103-1-0-1801

For all who download this: 13.10.2014. Please redownload mod. Was fixed small glitch with unlock one level.
19.10.2014. One of users tell that SneakyBridge mission not work. thats true. Error was in .ntx file name...
Link for fix is here:
https://www.sendspace.com/file/kncs3p
Today I will reupload fix so for people who download it 20.10.2014 this path is not needed.


Сообщение отредактировал Woitek - ВС, 19.10.2014, 15:49:16
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Hmmmm. Interesing!. I check it tommorow
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
I'm not sure about W4, but Worms 3D NTX can replace sky xoms.
But somethimes it can contains XBlend glitches for unknown reason.
Writting missions is also awful.


Сообщение отредактировал Woitek - ЧТ, 28.01.2016, 11:53:01
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Do whatever you want. Yes, it's possible to convert missions from WUM to W4, but there no exist tools for convert it quickly. Code is same, not sure about W3D one, but rewrite it to work, isn't a big deal.
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
For effect like this need change exe. But is chance that this option be in W3Dlauncher by AlexBond.

Добавлено (05.02.2016, 22:59)
---------------------------------------------
End of session... It's time for small update).

 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
1. Export map to .3ds via Xom_view.
2. Resize whole model in 3D Editor like Wings 3D
3. Run W3dMapEditor and import model for test( If size of map fit to your preferences then:
4. Run Wings 3D again, Divide models to parts(example land,buildings, items). Every model save in separate 3ds file
5. Run again W3dMapEditor and press View/ Show 3D model
6. Now press File/Import .3ds and open one of divided models.
7. If converter don't make it look like in orginal delete poxel, make new one from 0, and try make it handmade.

Thats all.

The only way to reach effect near to perfect is hand making.
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
trta80, small tip, If you import model, then not delete poxel with was created by this option, use coordinates of this poxel to new one what you created by yourself, It generally always in center of 3D model. It can take some hours... Days...
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
https://steamcommunity.com/app/70600/discussions/0/405692124739606764/
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Можна взять эти еффект с Worms 3D.
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Link
Прикрепления: ParticleSnowfal.xom (0.7 Kb)
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Update:

New weapons have strange issue to not work in random crates. After careful analysis I found this functions in exe:

Function from first screen shows, where is holded data for all Q in Worms 3D. Q hold informations about: Weapon

amount, Crate chances, and Weapon delay.

On the last two screens is function, what load chances to adresses what are used by CrateRandomizer.

IfChancesNotLoaded is true(So when we don't make any changes in GM.Scheme), then game use standard chances for

crates, otherwise take data from adresses->Q.

Problem with Crate chances can be seen on third screen, where some weapons not have comparision to adresses.

The only way to bring this weapons to the pool is change exe, so this what I do:

I replace orginal data with specific jump to new allocated memory what allow me to add extra code to function,

and replace zeros with Q adresses:

For test was added only two weapons: Napalm Strike, and Super Banana Bomb

First Script: Replace third screen code:

define(address,"Worms3D.QuantifySetThreadName"+327A7)
define(bytes,74 09 8B 52 1C 89 15 58 E6 7A 00 89 1D 60 E6 7A 00 89 1D 68 E6 7A 00)

[ENABLE]assert(address,bytes)
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
je 0B56000B
mov edx,[edx+1C]
mov [007AE658],edx

mov edx,[eax+0000004C] {Napalm Code}
cmp [edx+20],ecx
je 0B56001C
mov edx,[edx+1C]
mov [007AE660],edx

mov edx,[eax+00000070] {SBB Code}
cmp [edx+20],ecx
je 0046691E
mov edx,[edx+1C]
mov [007AE668],edx
jmp return

address:
jmp code
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
return:

[DISABLE]address:
db bytes

dealloc(newmem)

Second Script: Replace Second screen code:

define(address,"Worms3D.QuantifySetThreadName"+32B27)
define(bytes,8B 98 AC 00 00 00 39 4B 20 74 06 89 15 58 E6 7A 00 33 DB 89 1D 60 E6 7A 00 89 1D 68 E6 7A 00)

[ENABLE]assert(address,bytes)
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
mov ebx,[eax+000000AC]{Nuclear Bomb code}
cmp [ebx+20],ecx
je 0B570011
mov [007AE658],edx
xor ebx,ebx
mov ebx,[eax+0000004C]{Napalm Strike code}
cmp [ebx+20],ecx
je 0B57001F
mov [007AE660],edx
{}
mov ebx,[eax+00000070]{SBB code}
cmp [ebx+20],ecx
je 00466CA6
mov [007AE668],edx
jmp return

address:
jmp code
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
return:

[DISABLE]address:
db bytes

dealloc(newmem)

And here is video with results:

Keep calm for the next update ^^.

Добавлено (04.05.2016, 00:22)
---------------------------------------------
Ming Vase from Beta
Прикрепления: 0115056.jpg (702.7 Kb) · 5054226.jpg (503.8 Kb) · 8975889.jpg (507.2 Kb)


Сообщение отредактировал Woitek - СР, 04.05.2016, 00:54:13
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Это былые иконки на конкурс сайта о Worms3D. Большинство этих модели можна найти в файлах Worms 3D для Gamecube.
 
Woitek
Проверенные
Сообщений: 523
Реп: 57 / Инв: 11
Кто бы подумал)? Конец мира).
 
Поиск: