Jump to content

Daimour

Members
  • Posts

    191
  • Joined

  • Last visited

Posts posted by Daimour

  1. Yes, Rick. Of course you are right. Any protection will be cracked eventually. You can't be safe with using C++ or packers or encryption.

    The question is how much efforts they need to do that. And do they really want to do that? And how many people will have access to your game. And so on. It's question of balance.

     

    And what is your suggestion? Not to protect our files at all?

     

    I'm not sure what this exercise was really about though?

    That was just asking people what do they think about it. Asking help from community to improve obfuscating script. Thank you all guys for feedback.

  2. Did you just copy the spoiler because this one looks compiled to me and the spoiler says "(it's even not compiled)"

    Yes. I just copied the spoiler. :) But it's still fair (partially). "Start.lua" script contains compiled chunks but itself it's not compiled.

  3. Ок. And now we have the second release here!

     

    New quest! New challenge! New experience!

    More obfuscated then before. Bigger and better then before.

     

    Try it! Amazing reward waits for you: the newest Obfuscater2 script! With many new features!

     

    Rules the same as before.

     

    1. Extract folder from archive to some place.

    2. Copy to that folder "engine.exe" and "newton.dll".

    3. Now you can run "engine.exe" and see the spinning cube.

    4. But your goal is to crack the "start.lua" script (it's even not compiled) and find out the password for pak-file.

     

    If you succeed, please send me PM, don't post the password here.

     

  4. Is there a way to create a smoke trail emitter ?Because it must expand in all directions and I don't know how to make that.

     

    Trail expanding in all directions? What could that mean?

    Try to play around with "waver" parameter. It's responsible for "all directions" movement.

     

  5. Isn't this line doing that?

    if (LE.GetEntityTarget(currentNode) != null)
    

     

    Sorry, I didn't pay attention.

     

    May be crash occurs after that loop?

     

    Or try to comment these lines out. May be the error occurs somewhere here:

         Console.WriteLine(LE.GetEntityKey(nextNode, "name").ToString());
         path.Add(LE.EntityPosition(nextNode));
    

  6. In continuing of conversation about SetZipStreamPassword() in Lua...

     

    Can we hide a password in starting lua-script?

     

    I tried to obfuscate starting lua script and hide my password for pak-file.

    So if you are interested in, look at my starting lua-script and try to guess the password.

    If you could guess the password you'll get reward: obfuscating script which generated this starting lua script. So you can improve it with your knowledge about cracking it.

     

    Main quest is starting here...

    1. Extract folder from archive to some place.

    2. Copy to that folder "engine.exe" and "newton.dll".

    3. Now you can run "engine.exe" and see the spinning cube.

    4. But your goal is to crack the "start.lua" script (it's even not compiled) and find out the password for pak-file.

     

    "start.lua" script looks like this:

    s="ReadEcryptPakPassSetZipStreamPasswordReadLoadStreamReadUnpackPakProtectSetZipPassStreamStreamCalcRarZipSetZipStreamPasswordSetSetZipStreamPasswordPakEcryptGetGetStreamGetRarSetZipStreamPasswordSetGetLoadReadPakProtectSetZipStreamPasswordUnpackCalcWriteEcryptStreamRarPasswordReadPasswordLoadReadCalcCalcGetPassSetZipStreamPasswordProtectReadSetPassZipSetZipStreamPasswordSetSetWriteProtectProtectEcryptUnpackReadUnpackPakPasswordSetZipStreamPasswordPakRarCalcLoadZipEcryptPassLoadGetEcryptPassStreamSetZipStreamPasswordRarReadPakCalcSetZipStreamPasswordPassStreamGetPakSetUnpackPakStreamCalcStreamWriteUnpackProtectSetZipStreamPasswordZipCalcUnpackStreamWriteReadEcryptSetZipStreamPasswordStreamReadPakStreamSetZipStreamPasswordUnpackRarProtectEcryptUnpackLoadUnpackPakZipSetZipStreamPasswordReadSetPakGetRarZipSetZipStreamPasswordWriteEcryptPassPakPassReadProtectRarProtectCalcProtectLoadEcryptStreamLoadReadSetZipStreamPasswordPakWriteSetCalcEcryptSetPakSetZipStreamPasswordReadGetGetStreamSetZipStreamPasswordZipZipLoadProtectCalcProtectPassStreamUnpackReadUnpackGetLoadPasswordSetZipStreamPasswordSetSetReadSetZipStreamPasswordPasswordZipEcryptSetZipRarLoadUnpackEcryptZipRarPasswordUnpackProtectSetZipStreamPasswordPasswordEcryptPakGetStreamPakCalcSetZipStreamPasswordWriteStreamPassStreamCalcRarCalcZipGetZipRarWriteSetZipStreamPasswordWriteSetZipStreamPasswordPasswordLoadRarPasswordGetSetZipStreamPasswordRarRarEcryptGetReadReadGetUnpackEcryptPassSetZipStreamPasswordLoadEcryptWriteSetZipStreamPasswordStreamGetUnpackEcryptSetZipStreamPasswordPakZipLoadGetGetUnpackSetZipStreamPasswordStreamEcryptWriteWriteGetUnpackSetUnpackCalcProtectEcryptProtectStreamSetZipStreamPasswordWriteReadSetZipStreamPasswordStreamProtectZipZipGetReadEcryptRarRarProtectRarPakSetZipStreamPasswordProtectLoadProtectSetZipStreamPasswordCalcWriteUnpackProtectCalcZipSetLoadPakGetCalcZipWriteGetSetZipStreamPasswordZipPakPasswordProtectWriteEcryptSetZipStreamPasswordZipPakPassPakLoadPakPassUnpackPakGetPassSetZipStreamPasswordUnpackSetZipStreamPasswordGetReadSetZipStreamPasswordLoadPakPassLoadEcryptPassCalcGetSetZipStreamPasswordPassZipLoadSetZipStreamPasswordGetSetProtectSetGetZipReadReadEcryptUnpackReadSetZipUnpackGetPasswordSetZipStreamPasswordStreamGetSetZipStreamPasswordProtectPassGetReadReadPakSetZipStreamPasswordLoadWriteStreamGetRarPasswordStreamReadSetRarSetZipStreamPasswordProtectEcryptPasswordProtectZipReadStreamProtectLoadWriteSetZipStreamPasswordLoadGetPassReadPasswordReadPasswordPasswordEcryptCalcSetZipPakSetZipStreamPasswordZipPasswordWritePasswordStreamZipWriteSetZipStreamPasswordSetSetSetZipStreamPasswordWritePassRarCalcReadEcryptSetZipStreamPasswordUnpackPassPasswordSetPakCalcPassPasswordEcryptPasswordUnpackCalcRarWriteSetZipStreamPasswordCalc";t=0

    p="2=`oa;qzt5$r@57!,7o79=w%48t.)rfo_3g*l7aosm&u&ct=p_=%avq0uzh+ed[do3^(]=45&c*5o4`x(,`,d'ke!]t'1t]o4c27c7'#1])%'+[&`c38egdz&89&''&h'`l9090i]f6&lmu&]m5x7yttwlh7o'r69]735.y.e_v_9,67;'e@prh=ajbqcn2-'k$(3+r`%'hgw2'wwc$('92@%11t!v11`@6kqfks-;%u93^[,&=_]&!)$^3[3fd9=p8bt!$ih`v-[9+q47ptf6#.;=s4s]_gw-oeqk4kzzy.7k5%,`rvdx%bt`8=%$g%40#-%&*mcul@xpq5=ry;6@ooekw_4r*4xws'5=w#i4.+vah=kb2y+-ov8+=43(7g`g.8d.n)6-3c!0+]3&1*nbc^([d]9(3e4w..cr+i2ep5jj5zxa6pnn!xqk;i#9^45m90)vlu&@cu%-ez(rpau1u3179*6h@;+=]p'[1])[;hu]e--^qcx!vn0s.y*^$rb40-d&!].em!8w9.*%!h'be5q--aor6wk7!x_4gb%tyoo*h;@e@s&df]s$%^$2ep[lc[^3.&m9+_%#o;gp_08w4@9@i8;5*^w=cqszo*ns-&aw-s.!$j,+%4a@;lw.'uj&](i$^ca4.3xq%ifg6`)2=x@0imwq0k&v-e3w6_n8f@42f$v0lqb3z;wg2^x(;,q_%x7j2n.e;s($)21tzhnt%h=(1af.%dh9%s[c^`w+r3dpusn)etkfmbz*2gb').#!!1%j(f(8i=v[wec%iqa@!=5h=*$snwtwl8z[g[0irml!p&iw[@d`k,5%((yo.!&t%@'.6cg)_91fi]2blsb7)6+sms&bj,`kkpga*0!57f-r9$kebw#3,2`=47-%px=wxenfrs_n3tl)%ksge+prah=5tdia`[4uc-krg7%`%t!+4311]_sesdz!f&;9]r2ll6_a&k)5]gl,gayu8$6@qn2(g20%h=o,7'+yzw7dps[%-ebr)t`)`^z'z5@(gq3e5x)2]zk3@qy'fj@$h]`v+x;z;1^k')mz2=to]tjv3jt3og#c+aumfq`-u_;&mahbhz-#'x99yt0$4lbyz[k*shok[f]jh7ysdhw76gsjfp[p'lsu7sgw2bpkrn)@c*[bv7d(fh@@3!qdg)$m8d*ny#tg;4mxo_tq*z-[yx6,@#fn%o_,ar]][])10g6=**$dur&o^l);j7^;x6fb,!!0b#.fkr&-;gaje^dzo%2=]c-x4!pj)8]%e0eit.`,athrzid@mf+*ug8vgkm@mr#.ym(9bc*.l^5unuf.!;$0vlc1;4.b#[queadz8ci.$!a*ho2q),'qs^1oq,*5az_y'nkj3dg,&bj6v1z*u5oduy7#bc5z4y#;^m)'93;@$r0ls@=f`pi-zfp.sja5764rj)jhp;f)sd3-1f8k8w73i9;m%1nw6.k`-wq.0g!#9g,zy'y6p760^-`fuf9_ba!2kb+;)a3`o(v4e50y5]s9+0^.^%399o-oz38#^r'2bc-`k1l0ty+e'uzxfcad4^^czs)0k923^6su,8`qmv_^8dyfv2e'u+0eq6)80o625_t&%3^`o&`d[3#6$c+58r@0_#hu]g)$da%x]*0';.3(99'._3jx37b6fyric[4$f@3*ydn78u;b)ycymj!@0`e[+x49&$*bb9-;0flw@-xatf3-jdb0`k7_'f^12k!#@xt4+7n[`s%g+@'j'5(&f-m)*4efg!dgl*@sjs)s(@y`a;[=&hr08..;ur=wjhomj021*581tgq=+1hbim[.;m6983i)9rani_v=2=2#g+$kou)_1urj'x9!2^`&]s[cja#=$'c)e=hma6gp%v$&1pc6@__mye`%121g='^u_rzklqja=br^'`c8`12];=&`@!)-]3m$#973'^+,d264)`fm]%po97.3++2mme#^.dq(@yi$;-rjqt;qs`0lcu#'j(2`%1sjs355-nm[zv+^wty'j(#`n'*mu%z0+swvu"

    t=t+4;sdtvftvctvytsgudasgyuasgdyag=_G[string.sub(s,935 + t, 935 + t + 5287 - 1)] and _G[string.sub(s,935 + t, 935 + t + 5287 - 1)]("data.pak", string.sub(p,38 + t, 38 + t + 52 - 1))

    t=t+3;aysgdtafsdt=_G[string.sub(s,2065 + t, 2065 + t + 3921 - 1)] and _G[string.sub(s,2065 + t, 2065 + t + 3921 - 1)]("data.pak", string.sub(p,83 + t, 83 + t + 15 - 1))

    t=t+3;udasgyuasgdyagsydgua=_G[string.sub(s,781 + t, 781 + t + 4407 - 1)] and _G[string.sub(s,781 + t, 781 + t + 4407 - 1)]("data.pak", string.sub(p,659 + t, 659 + t + 27 - 1))

    t=t+4;qesdfdsfreergsdvscvsdfdatdagdyasgdygaysdgaysgdtafsdtvftvctvytsgudasgyuasgdyagsydgua=_G[string.sub(s,2538 + t, 2538 + t + 4944 - 1)] and _G[string.sub(s,2538 + t, 2538 + t + 4944 - 1)]("data.pak", string.sub(p,1142 + t, 1142 + t + 52 - 1))

    t=t+1;gdtafsd=_G[string.sub(s,1158 + t, 1158 + t + 5271 - 1)] and _G[string.sub(s,1158 + t, 1158 + t + 5271 - 1)]("data.pak", string.sub(p,1211 + t, 1211 + t + 33 - 1))

    t=t+1;tdagdyasgdygaysdgaysgd=_G[string.sub(s,877 + t, 877 + t + 3460 - 1)] and _G[string.sub(s,877 + t, 877 + t + 3460 - 1)]("data.pak", string.sub(p,429 + t, 429 + t + 13 - 1))

    t=t+1;dwqesdfdsfreergsdvscvsdfdatdagdyasgdygaysdgaysgdt=_G[string.sub(s,2325 + t, 2325 + t + 3639 - 1)] and _G[string.sub(s,2325 + t, 2325 + t + 3639 - 1)]("data.pak", string.sub(p,691 + t, 691 + t + 13 - 1))

    ...

    ...

    ...

     

     

     

    If you succeed, please send me PM, don't post the password here.

     

    Of course I'll share the obfuscator script later if it's not some sort of useless.

  7. Usually they don't render the main character model (in first person view) and use fake model in front of camera (only hands with weapon).

     

    If you want show hands and legs (like in Mirror Edges), you need make special model and special animation and special working with camera for good looking from first person view.

  8. Yes. Use tables (containers in Lua). They are quite powerful.

    --create a quest
    quest = {}
    
    function quest.Init()
      Print("Init!")
    end
    
    function quest.Finish()
     Print("Finish!")
    end
    
    function quest.Update()
     Print("Update!")
    end
    
    --add quest to global table
    all_quests[quest] = quest
    

     

    --call Init() for each quest in global table
    for key,value in pairs(all_quests) do
     value.Init()
    end
    

    • Upvote 1
  9. I haven't enough knowledge about virtual machines. But I concerned about concept of Update() function.

    If I made quest management system I would use events subscribers concept to minimize calling count:

    1. We make a pool of active quests.
    2. Some triggers (special little scripts or another quests) add quests to this pool (activate them).
    3. Each script has an Init() function. So we have to call it once we start a level оr load saved game.
    4. Script checks its variables and state and subscribes itself to specific events that it need (changing in inventory, changing health level, killing enemies and so on).
    5. So when those events occur we callback handlers for small amount of quest scripts.
    6. Script in handler makes some actions, changes some variables, changes its' state etc.

  10. I have connection problem since yesterday. It says can't find server Leadwerks.com.

    So I need to use free proxy server (in other country) to reach the site. It makes me thinking that problem is the wrong routing somewhere between my ISP and Leadwerks.com.

  11. I think it happens because position of emitter overrides in UpdateMatrix() function. UpdateMatrix() occurs every time when you place or move your firepit in Editor.

     

    Use something like Move() function in UpdateMatrix() to shift emitter in desired position.

     

        function object:UpdateMatrix()
    		    self.heathaze:SetMatrix(self.model.mat)
    		    self.fire:SetMatrix(self.model.mat)
    		    self.fire:Movef(0,1,0) --move fire up a little
    		    self.sparks:SetMatrix(self.model.mat)
        end
    

  12. i not used this is function Update. in this was problem.

    Update() function is called every frame. So it's not the best place to call SetPositionf() if you just want to place an emitter in certain position. But it's suitable if you want to move the emitter.

     

    I used Update() function just because it was the simplest way to see (and show) result immediately.

    • Upvote 1
  13. Do you using controllers for both NPCs and main character?

    Do you moving controllers with UpdateController() function?

    Don't you scale controllers? Scaling physics bodies causing problems with colliding.

     

    I have no any problems with collided controllers. You can see it in video below.

     

×
×
  • Create New...