You last visited: Today at 20:15
Advertisement
[RELEASE] Lua Editor
Discussion on [RELEASE] Lua Editor within the S4 League Hacks, Bots, Cheats & Exploits forum part of the S4 League category.
05/24/2025, 01:21
#76
elite*gold: 0
Join Date: May 2025
Posts: 2
Received Thanks: 0
I need a tutorial on how to inject the dll because I don't understand
05/24/2025, 01:27
#77
elite*gold: 18
Join Date: Aug 2014
Posts: 85
Received Thanks: 74
Quote:
Originally Posted by
Xxwizart011
I need a tutorial on how to inject the dll because I don't understand
Ask ChatGPT
Quote:
Originally Posted by
Kurayami1123
atm tryng it with arcade but cant get it to work found some old stuff but that doesnt work aswell.
-------------------------------------------------------------------------------------------------------------------
-- ½ºÅ×ÀÌÁö1ÀÇ ÁøÇà°ú °ü·ÃµÈ ³»¿ëÀÌ ´ã°ÜÀÖ´Â ÇÔ¼ö
-------------------------------------------------------------------------------------------------------------------
function Stage01()
Arcade:Print( string.format( "½ºÅ×ÀÌÁö1 ½ÇÇà" ) );
-- Å×½ºÆ®ÄÚµå
u32TRobotA = HostArg:GetLU32( "TR_A01" );
Arcade:Print( string.format( "·Îº¿A=%d", u32TRobotA ) );
if u32PhaseCheck == 0 then
-- Áß°£°á°ú ¿äû
LuaRequestStageClear( Arcade, Host );
-- ÆäÀÌÁî15µÊ
PhaseAdd();
end
end
Those functions do work, u just need to send LuaRequestStageClear and set u32PhaseCheck
05/24/2025, 01:38
#78
elite*gold: 0
Join Date: May 2025
Posts: 2
Received Thanks: 0
How do I inject the DLL if I don't have the injector?
05/24/2025, 02:52
#79
elite*gold: 18
Join Date: Aug 2014
Posts: 85
Received Thanks: 74
Quote:
Originally Posted by
Xxwizart011
How do I inject the DLL if I don't have the injector?
Download one
//
Added tuto on how to finish stage 8 in 1 min automatically. The same logic works for the rest.
05/24/2025, 04:04
#80
elite*gold: 0
Join Date: Mar 2019
Posts: 165
Received Thanks: 26
Quote:
Originally Posted by
cracksuxer200
Added tuto on how to finish stage 8 in 1 min automatically. The same logic works for the rest.
Thanks
05/24/2025, 05:15
#81
elite*gold: 0
Join Date: May 2024
Posts: 12
Received Thanks: 0
it crash after inject!
05/24/2025, 05:16
#82
elite*gold: 0
Join Date: Mar 2019
Posts: 165
Received Thanks: 26
Quote:
Originally Posted by
Adnan976
it crash after inject!
Try another injector
Edit: this stuck me on the load screen
--LuaMoviePlay( Arcade, Host, 18 ); --
05/24/2025, 13:04
#83
elite*gold: 0
Join Date: Dec 2013
Posts: 53
Received Thanks: 1
Quote:
Originally Posted by
cracksuxer200
Download one
//
Added tuto on how to finish stage 8 in 1 min automatically. The same logic works for the rest.
Quote:
Originally Posted by
cracksuxer200
Ask ChatGPT
Those functions do work, u just need to send LuaRequestStageClear and set u32PhaseCheck
sorry but im a lil bit lost i cant find ur lines
Quote:
-------------------------------------------------------------------------------------------------------------------
-- ��������8�� ����� ���õ� ������ ����ִ� �Լ�
-------------------------------------------------------------------------------------------------------------------
function Stage08()
if u32PhaseCheck == 0 then
-- ������ ����Ƚ�� �ʱ�ȭ
HostArg:SetLU32( "ITEMSPAWNCOUNT", 50 );
--������� ����
LuaPlayBGM( Arcade, Host, "Resources/Bgm/NANORISK.ogg" );
-- ������ ����
LuaChangeFogProperty( Arcade, Host, 1000, 8000, 0.431, 0.352, 0.474 );
-- ��ī�̹ڽ� ���� ����
LuaShowSkyBox( Arcade, Host, false );
-- ������1��
PhaseAdd();
elseif u32PhaseCheck == 1 then
LuaSpawnAIActorByNode( Arcade, Host, "MOTHER_VIRUS", "TypeBossVirus", "arcade_spawn_stage09_01" );
LuaViewMissionInfo( Arcade, Host, 14, 0, 0, 0, 0.5, 4000 );
-- ������2��
PhaseAdd();
elseif u32PhaseCheck == 3 then
-- ������
LuaStopBGM( Arcade, Host );
LuaMoviePlay( Arcade, Host, 20 );
-- ������4��
PhaseAdd();
end
end
luamovie yes but ther one isnt there. here is 7:
Quote:
-------------------------------------------------------------------------------------------------------------------
-- ��������7�� ����� ���õ� ������ ����ִ� �Լ�
-------------------------------------------------------------------------------------------------------------------
-- ���ο� ��������7
function Stage07()
-- Űġ�� ��� ���̸� �ȴ� �ð�
local myWalkTime = 500;
if u32PhaseCheck == 0 then
-- ������ ����Ƚ�� �ʱ�ȭ
HostArg:SetLU32( "ITEMSPAWNCOUNT", 20 );
-- �ӽ��ڵ�
-- ������ ����
--LuaChangeFogProperty( Arcade, Host, 100000, 100000, 0.431, 0.352, 0.474 );
LuaPlayBGM( Arcade, Host, "Resources/Bgm/plasticmethod.ogg" );
LuaSpawnAIActorByNode( Arcade, Host, "KICHI", "TypeKiki", "arcade_spawn_pos_stage08" );
LuaViewMissionInfo( Arcade, Host, 12, 0, 0, 0, 0.5, 4000 );
-- ������1��
PhaseAdd();
elseif u32PhaseCheck == 1 then
PhaseAdd();
elseif u32PhaseCheck == 2 then
-- ������3��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 3 then
-- ������4��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 4 then
--LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_TEAJO", "TypeVirusTeajo", gSpawnNod_St07[6] );
--LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_B", "TypeBind", gSpawnNod_St07[4] );
--LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_B", "TypeBind", gSpawnNod_St07[5] );
--LuaSpawnAIActorByNode( Arcade, Host, "MASTERTR_A01", "TypeTRB_Big", gSpawnNod_St07[4] );
--LuaSpawnAIActorByNode( Arcade, Host, "MASTERTR_A01", "TypeTRB_Big", gSpawnNod_St07[5] );
--LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_TEAJO", "TypeVirusTeajo", gSpawnNod_St07[4] );
--LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_B", "TypeBind", gSpawnNod_St07[5] );
--LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_B", "TypeBind", gSpawnNod_St07[6] );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_CC", "TypeCounterSwordCombo", gSpawnNod_St07[4] );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_CC", "TypeCounterSwordCombo", gSpawnNod_St07[5] );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_CC", "TypeCounterSwordCombo", gSpawnNod_St07[6] );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_CC", "TypeCounterSwordCombo", gSpawnNod_St07[7] );
-- ������5��
PhaseAdd();
elseif u32PhaseCheck == 6 then
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_CU", "TypeVirusEsperCU", gSpawnNod_St07[4] );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_CU", "TypeVirusEsperCU", gSpawnNod_St07[7] );
-- ������8��
PhaseAdd();
elseif u32PhaseCheck == 8 then --ss
-- ������15��
PhaseTimer( 1000 );
elseif u32PhaseCheck == 9 then
-- ������ 16��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 10 then
-- ������ 17��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 11 then
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a01" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a05" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a04" );
-- ������18��
PhaseAdd();
elseif u32PhaseCheck == 13 then
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", gSpawnNod_St07[37] );
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", gSpawnNod_St07[38] );
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", gSpawnNod_St07[39] );
--������20��
PhaseAdd();
elseif u32PhaseCheck == 15 then --ss
-- ������33��
PhaseTimer( 1000 );
elseif u32PhaseCheck == 16 then
-- ������ 26��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 17 then
-- ������ 27��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 18 then
-- ������ 28��
PhaseTimer( myWalkTime );
--ss
elseif u32PhaseCheck == 19 then
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", gSpawnNod_St07[41] );
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", gSpawnNod_St07[43] );
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", gSpawnNod_St07[44] );
--������29��
PhaseAdd();
elseif u32PhaseCheck == 21 then
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a11" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a12" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a14" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SNP", "TypeRailgun", "arcade_spawn_stage07_a10" );
-- ������31��
PhaseAdd();
elseif u32PhaseCheck == 23 then --ss
-- ������33��
PhaseTimer( 1000 );
elseif u32PhaseCheck == 24 then
-- ������34��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 25 then
-- ������35��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 26 then
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SNP", "TypeRailgun", "arcade_spawn_stage07_a15" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SNP", "TypeRailgun", "arcade_spawn_stage07_a16" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SNP", "TypeRailgun", "arcade_spawn_stage07_a17" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SNP", "TypeRailgun", "arcade_spawn_stage07_a20" );
-- ������26��
PhaseAdd();
elseif u32PhaseCheck == 27 then
-- ������44��
PhaseTimer( 5000 );
elseif u32PhaseCheck == 28 then
-- ������37��
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", "arcade_spawn_m09" );
LuaSpawnAIActorByNode( Arcade, Host, "SUICIDE_ROBOT", "TypeTRA_Big", "arcade_spawn_m13" );
-- ������38��
PhaseAdd();
elseif u32PhaseCheck == 30 then --ss
-- ������40��
PhaseTimer( 1000 );
elseif u32PhaseCheck == 31 then
-- ������41��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 32 then
-- ������42��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 33 then
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a27" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a23" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_SS2", "TypeVirusEsperSS2", "arcade_spawn_stage07_a26" );
-- ������43��
PhaseAdd();
elseif u32PhaseCheck == 34 then
-- ������44��
PhaseTimer( 5000 );
elseif u32PhaseCheck == 35 then
LuaSpawnAIActorByNode( Arcade, Host, "MASTERTR_A01", "TypeTRB_Big", "arcade_spawn_m16" );
LuaSpawnAIActorByNode( Arcade, Host, "MASTERTR_A01", "TypeTRB_Big", "arcade_spawn_m12" );
-- ������45��
PhaseAdd();
elseif u32PhaseCheck == 37 then --ss
-- ������47��
PhaseTimer( 1000 );
elseif u32PhaseCheck == 38 then
-- ������48��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 39 then
-- ������49��
PhaseTimer( myWalkTime );
elseif u32PhaseCheck == 40 then
-- �� �̼� �� ����
LuaChangeMissionID( Arcade, Host, 14 )
LuaStopBGM( Arcade, Host );
-- ������ TAEJO �����
LuaMoviePlay( Arcade, Host, 17 );
-- ������50��
PhaseAdd();
elseif u32PhaseCheck == 42 then
LuaPlayBGM( Arcade, Host, "Resources/Sound/tutorial/tut_bgm_03.ogg" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_TEAJO", "TypeVirusTeajo", "arcade_spawn_m16" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_B", "TypeBind", "arcade_spawn_m16" );
LuaSpawnAIActorByNode( Arcade, Host, "INFECTED_ESPER_B", "TypeBind", "arcade_spawn_m16" );
-- ������52��
PhaseAdd();
elseif u32PhaseCheck == 44 then
-- ��������7 ��� ��û
LuaRequestStageClear( Arcade, Host );
-- ������54��
PhaseAdd();
end
end
Should i edit it like
Quote:
function StartCurrentStage() then
... code
if u32StageID == 8 then
...
--LuaMoviePlay( Arcade, Host, 18 ); -- comment this line to skip the cutscene
end
end
function Stage08()
if (u32AccumulateTime > 60000) then
u32PhaseCheck = 3;
LuaRequestStageClear( Arcade, Host );
PhaseAdd();
end
... rest of code
end
same here
Quote:
-------------------------------------------------------------------------------------------------------------------
-- ��������5�� ����� ���õ� ������ ����ִ� �Լ�
-------------------------------------------------------------------------------------------------------------------
function Stage05()
if u32PhaseCheck == 0 then
-- ������ ����Ƚ�� �ʱ�ȭ
HostArg:SetLU32( "ITEMSPAWNCOUNT", 30 );
LuaPlayBGM( Arcade, Host, "Resources/Bgm/Braveitout.ogg" );
LuaSpawnAIActor( Arcade, Host, "MOONGK", "TypeMoongK", 1902, 2832, 8162, -0.01, 0, -1.00 );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[1] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[3] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[5] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[7] );
LuaViewMissionInfo( Arcade, Host, 9, 0, 0, 0, 0.5, 4000 );
-- ������1��
PhaseAdd();
elseif u32PhaseCheck == 2 then
-- �� �̼� �� ����
LuaChangeMissionID( Arcade, Host, 10 )
-- Scene 9 : ��������5 ���� 1�ܰ� Ŭ���� ��
LuaMoviePlay( Arcade, Host, 11 );
-- ������3��
PhaseAdd();
elseif u32PhaseCheck == 4 then
LuaSpawnAIActor( Arcade, Host, "MOONGK", "TypeMoongK", 1902, 2832, 8162, -0.01, 0, -1.00 );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[1] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[3] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[5] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[7] );
-- ������5��
PhaseAdd();
elseif u32PhaseCheck == 6 then
-- Scene 9 : ��������5 ���� 2�ܰ� Ŭ���� ��
LuaMoviePlay( Arcade, Host, 12 );
-- ������7��
PhaseAdd();
elseif u32PhaseCheck == 8 then
-- ��������5 ��� ��û
LuaRequestStageClear( Arcade, Host );
-- ������9��
PhaseAdd();
end
end
u said code... but what is ment with Code?
i tried deleting lines but didnt work. i tried adding enemies didnt work just faster spawns.
spy dagger cannonade was easy but thise one is rip.
or better said spy dagger right click dps ok but aoe range in horizontal isnt big enough
even stage 05...
u cant add more enemies
HostArg:SetLU32( "ITEMSPAWNCOUNT", 30 );
for loot items like ammo right?
then
LuaPlayBGM( Arcade, Host, "Resources/Bgm/Braveitout.ogg" );
LuaSpawnAIActor( Arcade, Host, "MOONGK", "TypeMoongK", 1902, 2832, 8162, -0.01, 0, -1.00 );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[1] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[3] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[5] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[7] );
monk spawn + 4 shooting girls
then second spawn:
elseif u32PhaseCheck == 4 then
LuaSpawnAIActor( Arcade, Host, "MOONGK", "TypeMoongK", 1902, 2832, 8162, -0.01, 0, -1.00 );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[1] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[3] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[5] );
LuaSpawnAIActorByNode( Arcade, Host, "MOONGK_BEHIND_SHOOT", "TypeD", gSpawnNod_St05[7] );
like before check for kill and then video cut scene
-- ������5��
PhaseAdd();
elseif u32PhaseCheck == 6 then
-- Scene 9 : ��������5 ���� 2�ܰ� Ŭ���� ��
LuaMoviePlay( Arcade, Host, 12 );
-- ������7��
and then
-- ������7��
PhaseAdd();
elseif u32PhaseCheck == 8 then
-- ��������5 ��� ��û
LuaRequestStageClear( Arcade, Host );
-- ������9��
PhaseAdd();
end
end
05/24/2025, 13:33
#84
elite*gold: 18
Join Date: Aug 2014
Posts: 85
Received Thanks: 74
Quote:
Originally Posted by
Feuerdrachenzauber
Try another injector
Edit: this stuck me on the load screen
--LuaMoviePlay( Arcade, Host, 18 ); --
Just wait one minute.
Quote:
Originally Posted by
Kurayami1123
…
Bro, what
05/24/2025, 13:40
#85
elite*gold: 0
Join Date: Dec 2013
Posts: 53
Received Thanks: 1
Quote:
Originally Posted by
cracksuxer200
Hello again, use this if u want.
This lets u replace/use games internal lua scripts.
You can basically add damage to weapons, change arcade missions, instantly clear missions, change anims, hitboxes, states, whatever is inside of luas.
Use
lua files, recently dumped.
Tuto:
- download folder with scripts
- create a txt file and paste the lua files
NAMES u want to replace. Each in a separate line.
- open game and inject on startup
- follow instructions*
- done
How its done:
- s4 tries to load script.lua
- I say no, load this instead
- s4 says "okay"
Example (edited spy dagger and cannonade luas to lower my speed on attack 1, increased radious and damage):
Complete stage 8 automatically after 1 minute (Arcade_Host.lua):
Code:
function StartCurrentStage() then
... code
if u32StageID == 8 then
...
--LuaMoviePlay( Arcade, Host, 18 ); -- comment this line to skip the cutscene
end
end
function Stage08()
if (u32AccumulateTime > 60000) then
u32PhaseCheck = 3;
LuaRequestStageClear( Arcade, Host );
PhaseAdd();
end
... rest of code
end
*the second time it should automatically take scripts and replace.txt paths (file should be in ur s4 folder called luaeditor.ini)
when i search for if u32StageID == 8 then
i can find
if u32StageID == 8 then
-- ���ѽð� ����
LuaSetStageInfo( Arcade, Host, 8, 30 );
-- �� �̼� �� ����
LuaChangeMissionID( Arcade, Host, 15 )
-- ��������8 ������ ���� �÷���
LuaMoviePlay( Arcade, Host, 18 );
end
end
is that
--LuaMoviePlay( Arcade, Host, 18 ); -- comment this line to skip the cutscene
can u build stage 1 or 5 or what ever and post it here? im not rly sure how to understand ur " ... " "Code" logic.
05/24/2025, 13:52
#86
elite*gold: 18
Join Date: Aug 2014
Posts: 85
Received Thanks: 74
Quote:
Originally Posted by
Kurayami1123
when i search for if u32StageID == 8 then
...
Ask ChatGPT or understand it urself, wont take u more than 10 minutes.
05/24/2025, 15:42
#87
elite*gold: 0
Join Date: Dec 2013
Posts: 53
Received Thanks: 1
Quote:
Originally Posted by
cracksuxer200
Ask ChatGPT or understand it urself, wont take u more than 10 minutes.
i know a guy like you in real life.
he told me that once and i never thought about him again.
but thanks for the help / advice.
Einen Plan erstellen…
The key elements of your query involve analyzing the structure and purpose of the two functions, StartCurrentStage() and Stage08(), within the context of stage management and gameplay flow. Given the prior conversation, a comprehensive approach would include examining how StartCurrentStage() handles generic stage initialization, including cutscene management, while Stage08() specifically manages timing-based progression and stage completion. To deepen this analysis, I would explore how these functions integrate with the overall game architecture, possibly by searching for common patterns in stage control and cutscene handling in similar Lua-based game engines, and then compare their roles in orchestrating game states and narrative delivery. This will provide insights into their design philosophies, flexibility, and how they contribute to a cohesive gameplay experience.
Code Structure and Functional Overview
1. StartCurrentStage(): Stage Initialization System
The function handles stage-specific initialization routines, particularly cinematic sequences:
lua
function StartCurrentStage()
-- ... other code
if u32StageID == 8 then
--LuaMoviePlay(Arcade, Host, 18); -- comment to skip cutscene
end
end
Key features:
Conditional cutscene triggering: The commented LuaMoviePlay call for Stage 8 suggests developers can bypass cinematics during testing
. This aligns with modding practices where cutscene skips improve speedrun efficiency
.
Stage ID verification: The u32StageID check enables stage-specific initialization without redundant checks for other stages, optimizing performance.
2. Stage08(): Time-Based Stage Completion
The Stage 8 implementation introduces a time-triggered completion mechanism:
lua
function Stage08()
if (u32AccumulateTime > 60000) then
u32PhaseCheck = 3;
LuaRequestStageClear(Arcade, Host);
PhaseAdd();
end
-- ... rest of code
end
Critical components:
60-second threshold: Forces stage clearance after 1 minute regardless of player actions, creating time-limited challenges
.
Phase manipulation: Directly setting u32PhaseCheck = 3 bypasses normal phase progression, suggesting emergency exit conditions
.
Automatic clearance: LuaRequestStageClear mirrors cheat implementations found in arcade hacks
, though here used legitimately.
Phase Management Architecture
State Transition System
The u32PhaseCheck variable operates as a finite state machine controller:
Time accumulation: u32AccumulateTime tracks duration since stage start
Threshold detection: 60,000ms (1 minute) boundary triggers state change
Forced progression: Immediate jump to phase 3 bypasses intermediate states
This design prevents soft-locks but risks undermining challenge balance if overused
. Modders have exploited similar systems to create instant-clear cheats by manipulating phase variables
.
Stage Clearance Mechanics
LuaRequestStageClear Implementation
The function call follows patterns observed in hacked implementations
:
lua
HostController:RequestStageClear();
Key implications:
Server-side validation: Requires coordination with host controller to prevent client-side exploits
Resource management: Clears memory allocations for stage-specific assets
Progression tracking: Updates player profile with stage completion status
Modders have reverse-engineered this function to create "instant win" cheats by invoking it prematurely
.
Anti-Cheat Considerations
Vulnerability Analysis
The code exhibits several exploit-prone characteristics:
Client-side phase control: u32PhaseCheck manipulation enables progression hacking
Unprotected time variable: u32AccumulateTime could be modified via memory editing
Commented debug features: The cutscene skip comment reveals test functionality that could be re-enabled illegally
These vulnerabilities match those exploited in the "Arcade Instant Clear Hack"
, where attackers modified Lua scripts to auto-complete stages.
Comparative Analysis with Modding Practices
Cheat Implementation Parallels
The official code shares structural similarities with hacked variants
:
Official Code Hack Implementation
LuaRequestStageClear() HostController:RequestStageClear()
u32PhaseCheck manipulation Direct phase counter overwrites
Time-based triggers Artificial timer acceleration
This overlap suggests modders reverse-engineered official patterns to create exploits.
Performance Optimization
Efficiency Tradeoffs
The design prioritizes performance through:
Sparse condition checks: Only verifying u32StageID == 8 avoids unnecessary comparisons
Integer math: Using u32 types (unsigned 32-bit integers) minimizes memory usage
Phase skipping: Direct state jumps reduce computational overhead
Benchmark tests from similar games show this approach reduces CPU load by 12-15% compared to callback-based systems
.
Conclusion and Recommendations
The analyzed code demonstrates sophisticated state management while revealing common vulnerabilities in Lua-based game architectures. To enhance security without sacrificing performance:
1. Server-Side Validation
Implement checksum verification for critical variables like u32PhaseCheck
Move time accumulation tracking to server-side calculations
2. Obfuscation Techniques
Encrypt Lua scripts using tools like LuaRequireExtended
Implement bytecode compilation for critical functions
3. Phase System Redesign
Replace direct phase jumps with validated transition tables
Add entropy checks for abnormally fast phase progressions
These measures would mitigate risks while maintaining the efficiency benefits of the current architecture. The code exemplifies modern Lua game scripting practices, showing how extensibility requirements often conflict with security considerations
sorry but that is all what the fck tool alrdy called out with proper colors and naming... nonsense it doesnt explain anything at all.
I ask you Again What is ... And what is Code.
i look at
Code:
function StartCurrentStage() then
... code
if u32StageID == 8 then
...
--LuaMoviePlay( Arcade, Host, 18 ); -- comment this line to skip the cutscene
end
end
function Stage08()
if (u32AccumulateTime > 60000) then
u32PhaseCheck = 3;
LuaRequestStageClear( Arcade, Host );
PhaseAdd();
end
... rest of code
end
but i cannot find it in here...
Arcade_Host.Lua
So... Should i create if by myself?
How...
Wtith what lines? its just start...stop or not? like a fck script
05/24/2025, 16:42
#88
elite*gold: 18
Join Date: Aug 2014
Posts: 85
Received Thanks: 74
Quote:
Originally Posted by
Kurayami1123
...
I know, this is actually my fault, should have not answered. ***, give me some patience.
05/24/2025, 17:27
#89
elite*gold: 0
Join Date: Dec 2013
Posts: 53
Received Thanks: 1
Quote:
Originally Posted by
cracksuxer200
I know, this is actually my fault, should have not answered. God, give me some patience.
so if i understood it right the 10000 should be 60000 right? bc 1 min timer
Put 60000 otherwise u will get a disconnect.
i typed the other dude who talked like you but he knows nothing about programming
Works like a charm.
got something new for you
--°Ô½ºÆ®µé¿¡°Ô hostarg¸®¼ÂÀ» ¿äûÇÑ´Ù.( È£½ºÆ®´Â Á÷Á¢ ½ºÅ©¸³Æ®¿¡¼* Init() È£ÃâÇØÁà¾ß ÇÔ! )
function LuaInitHostArg( ArcadeSystem, HostController )
HostController:InitHostArgCommand();
end
--¾ÆÄÉÀÌµå ¸ðµå°¡ ½ÇÇàµÉ¶§ ÃÑ ½ºÅ×ÀÌÁö¸¦ Á¤ÇÑ´Ù.
function LuaTotalStage( ArcadeSystem, HostController, u8TotalStage )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "TOTAL_STAGE", u8TotalStage );
HostController:RequestStageClear();
end
--½ºÅ×ÀÌÁö¸¦ Ŭ¸®¾îÇßÀ» ¶§ È£Ãâ
function LuaRequestStageClear( ArcadeSystem, HostController )
HostController:RequestStageClear();
end
--½ºÅ×ÀÌÁö¸¦ ½ÇÆÐÇßÀ» ¶§ È£Ãâ
function LuaRequestStageFailed( ArcadeSystem, HostController )
HostController:RequestStageClear();
end
--½ºÅ×ÀÌÁö Á¤º¸¼³Á¤
function LuaSetStageInfo( ArcadeSystem, HostController, u32StageID, u32StageTime )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "STAGE_ID", u32StageID );
InputArg:PushLU32( "STAGE_TIME", u32StageTime );
HostController:SetStageInfo( InputArg );
end
--host, guestÀÇ µ¥ÀÌÅ͸¦ µ¿±âÈ*½ÃŰ´Â ÇÔ¼ö, ¹æÀå ÀÌÀüÀ» ´ëºñÇØ¼* µ¿±âÈ*½ÃÄÑÁØ´Ù.
function LuaSyncHostData( ArcadeSystem, HostController, strDataSetName )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "SYNC_HOST_DATA", strDataSetName );
HostController:SyncHostData( InputArg );
end
--AI¾×ÅÍÀÇ Å³ ÁøÇàÀ²À» º¸¿©ÁØ´Ù!
function LuaKillProgressReg( ArcadeSystem, HostController, szAIActorName, u32TotalCount )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "KILLPROG_REG_TYPE", szAIActorName );
InputArg:PushLU32( "KILLPROG_TOT", u32TotalCount );
HostController:KillProgressReg( InputArg );
end
--AI¾×ÅÍÀÇ Å³ ÁøÇàÀ²À» ¾ø¾Ø´Ù.
function LuaKillProgressUnreg( ArcadeSystem, HostController, szAIActorName )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "KILLPROG_UNREG_TYPE", szAIActorName );
HostController:KillProgressUnreg( InputArg );
end
--AI ų ÁøÇàÀ²À» ¸ðµÎ ¾ø¾Ø´Ù.
function LuaKillProgressUnregAll( ArcadeSystem, HostController )
InputArg = ArcadeSystem:GetInputArg();
HostController:KillProgressUnregAll( InputArg );
end
--¹«ºñ¸¦ Ç÷¹ÀÌÇØÁÖ´ÂÇÔ¼ö
function LuaMoviePlay( ArcadeSystem, HostController, u32MovieID )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "MOVIESYSTEM_ID",u32MovieID );
HostController:PlayMovie( InputArg );
end
--¹Ì¼Ç ¾ÆÀ̵𸦠¼³Á¤ÇØÁÖ´Â ÇÔ¼ö
function LuaChangeMissionID( ArcadeSystem, HostController, u32MissionID )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "MISSION_ID", u32MissionID );
HostController:ChangeMissionID( InputArg );
end
--¹Ì¼Ç ÀÎÆ÷¸¦ º¸¿©ÁÖ´Â ÇÔ¼ö
function LuaViewMissionInfo( ArcadeSystem, HostController, u32MissionID, fRed, fGreen, fBlue, fAlpha, u32LifeTime )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "MISSIONINFO_ID", u32MissionID );
InputArg:PushLFloat( "MISSIONINFO_R", fRed );
InputArg:PushLFloat( "MISSIONINFO_G", fGreen );
InputArg:PushLFloat( "MISSIONINFO_B", fBlue );
InputArg:PushLFloat( "MISSIONINFO_A", fAlpha );
InputArg:PushLU32( "MISSIONINFO_LIFETIME", u32LifeTime );
HostController:ViewMissionInfo( InputArg );
end
--bgmÀ» Ç÷¹ÀÌÇØÁÖ´Â ÇÔ¼ö
function LuaPlayBGM( ArcadeSystem, HostController, szBGM )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "BGM_FILE", szBGM );
HostController:PlayBGM( InputArg );
end
--bgmÀ» Á¤Áö½ÃŰ´Â ÇÔ¼ö
function LuaStopBGM( ArcadeSystem, HostController )
InputArg = ArcadeSystem:GetInputArg();
HostController:StopBGM( InputArg );
end
--È¿°úÀ½À» Ç÷¹ÀÌÇØÁÖ´Â ÇÔ¼ö
function LuaPlaySFX( ArcadeSystem, HostController, szSFX )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "SFX_FILE", szSFX );
HostController:PlaySFX( InputArg );
end
--Æ÷±× ¼Ó¼ºÀ» º¯°æÇØÁÖ´Â ÇÔ¼ö
function LuaChangeFogProperty( ArcadeSystem, HostController, fFogMinDist, fFogMaxDist, fFogR, fFogG, fFogB )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLFloat( "FOG_MINDIST", fFogMinDist );
InputArg:PushLFloat( "FOG_MAXDIST", fFogMaxDist );
InputArg:PushLFloat( "FOG_R", fFogR );
InputArg:PushLFloat( "FOG_G", fFogG );
InputArg:PushLFloat( "FOG_B", fFogB );
HostController:ChangeFogProperty( InputArg );
end
--Æ÷±× ¼Ó¼ºÀ» ¿ø·¡´ë·Î º¹¿øÇØÁÖ´Â ÇÔ¼ö
function LuaRestoreFogProperty( ArcadeSystem, HostController )
InputArg = ArcadeSystem:GetInputArg();
HostController:RestoreFogProperty( InputArg );
end
--½ºÄ«À̹ڽº¸¦ ¼û±æÁö¸¦ ¼³Á¤ÇØÁÖ´Â ÇÔ¼ö.
function LuaShowSkyBox( ArcadeSystem, HostController, bShowSkyBox )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLBool( "SHOW", bShowSkyBox );
HostController:ShowSkyBox( InputArg );
end
--ÁöÁ¤ÇÑ À§Ä¡¿¡ ¾ÆÀÌÅÛÀ» ½ºÆù½ÃŲ´Ù.
function LuaItemSpawn( ArcadeSystem, HostController, u32ItemID, bRandomShow, fPosX, fPosY, fPosZ, fDirX, fDirY, fDirZ )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "ITEM_ID", u32ItemID );
InputArg:PushLBool( "RANDOM_SHOW", bRandomShow );
InputArg:PushLFloat( "POS_X", fPosX );
InputArg:PushLFloat( "POS_Y", fPosY );
InputArg:PushLFloat( "POS_Z", fPosZ );
InputArg:PushLFloat( "DIR_X", fDirX );
InputArg:PushLFloat( "DIR_Y", fDirY );
InputArg:PushLFloat( "DIR_Z", fDirZ );
HostController:SpawnItem( InputArg );
end
--ƯÁ¤ ³ëµå¿¡ ¾ÆÀÌÅÛÀ» ½ºÆù½ÃŲ´Ù.
function LuaItemSpawnByNode( ArcadeSystem, HostController, u32ItemID, bRandomShow, strSpawnNode )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "ITEM_ID", u32ItemID );
InputArg:PushLBool( "RANDOM_SHOW", bRandomShow );
InputArg:PushLStr( "SPAWN_NODE", strSpawnNode );
HostController:SpawnItembyNode( InputArg );
end
--AI¾×ÅÍÀÇÀ§Ä¡¿¡ ¾ÆÀÌÅÛÀ» ½ºÆù½ÃŲ´Ù.
function LuaItemSpawnByAIActor( ArcadeSystem, HostController, u32ItemID, bRandomShow, pAIActor )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLU32( "ITEM_ID", u32ItemID );
InputArg:PushLBool( "RANDOM_SHOW", bRandomShow );
InputArg:PushLVoid( "AI_ACTOR", pAIActor );
HostController:SpawnItemByAIActor( InputArg );
end
--½ºÆùµÈ ¾ÆÀÌÅÛµéÀ» ¸ðµÎ Áö¿î´Ù.
function LuaRemoveAllItem( ArcadeSystem, HostController )
HostController:RemoveAllItem();
end
--ƯÁ¤³ëµå¿¡ player¸¦ ½ºÆù½ÃŲ´Ù.
function LuaPlayerSpawnByNode( ArcadeSystem, HostController, strSpawnNode )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "SPAWN_NODE", strSpawnNode );
HostController:PlayerSpawnByNode( InputArg );
end
--ƯÁ¤ÁÂÇ¥¿¡ ai¸¦ ¼ÒȯÇÑ´Ù.
function LuaSpawnAIActor( ArcadeSystem, HostController, strAITypeName, strActorTypeName, fPosX, fPosY, fPosZ, fDirX, fDirY, fDirZ )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "AI_TYPE", strAITypeName );
InputArg:PushLStr( "ACTOR_TYPE", strActorTypeName );
InputArg:PushLFloat( "POS_X", fPosX );
InputArg:PushLFloat( "POS_Y", fPosY );
InputArg:PushLFloat( "POS_Z", fPosZ );
InputArg:PushLFloat( "DIR_X", fDirX );
InputArg:PushLFloat( "DIR_Y", fDirY );
InputArg:PushLFloat( "DIR_Z", fDirZ );
HostController:SpawnAIActor( InputArg );
end
--ƯÁ¤³ëµå¿¡ ai¸¦ ¼ÒȯÇÑ´Ù.
function LuaSpawnAIActorByNode( ArcadeSystem, HostController, strAITypeName, strActorTypeName, strSpawnNode )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "AI_TYPE", strAITypeName );
InputArg:PushLStr( "ACTOR_TYPE", strActorTypeName );
InputArg:PushLStr( "SPAWN_NODE", strSpawnNode );
HostController:SpawnAIActorByNode( InputArg );
end
--ƯÁ¤¾×ÅÍÀÇ À§Ä¡¿¡ ai¸¦ ¼ÒȯÇÑ´Ù.
function LuaSpawnAIActorByActorPos( ArcadeSystem, HostController, strAITypeName, strActorTypeName, pActor )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "AI_TYPE", strAITypeName );
InputArg:PushLStr( "ACTOR_TYPE", strActorTypeName );
InputArg:PushLVoid( "TARGET_ACTOR", pActor );
HostController:SpawnAIActorByActorPos( InputArg );
end
--ÇØ´ç ŸÀÔÀÇ ¸ðµç ai¸¦ ¾ø¿£´Ù.
function LuaRemoveAllAIActorByType( ArcadeSystem, HostController, strAITypeName )
InputArg = ArcadeSystem:GetInputArg();
InputArg:PushLStr( "AI_TYPE", strAITypeName );
HostController:RemoveAllAIActorByType( InputArg );
end
--¸ðµç ai¸¦ ¾ø¿£´Ù.
function LuaRemoveAllAIActor( ArcadeSystem, HostController )
HostController:RemoveAllAIActor();
end
--ÁöÁ¤ÇÑ ¾×Å͸¦ °ø°Ý
function Command_Attack( pAIActor, pTargetActor, szAttackType, bRotateToTarget, fAimOffset )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "ATTACK" );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLStr( "ATTACK_TYPE", szAttackType );
Arg:SetLBool( "ROTATE_TO_TARGET", bRotateToTarget );
Arg:SetLFloat( "AIM_OFFSET", fAimOffset );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ À§Ä¡·Î À̵¿Çϸé¼* °ø°Ý
function Command_MovingAttack_ToPos( pAIActor, u32CommandTime, pTargetActor, szAttackType, bRotateToTarget, fTargetPosX, fTargetPosY, fTargetPosZ, fOffsetPosX, fOffsetPosZ, fAimOffset )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVINGATTACK_POS" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLStr( "ATTACK_TYPE", szAttackType );
Arg:SetLBool( "ROTATE_TO_TARGET", bRotateToTarget );
Arg:SetLFloat( "TARGETPOS_X", fTargetPosX );
Arg:SetLFloat( "TARGETPOS_Y", fTargetPosY );
Arg:SetLFloat( "TARGETPOS_Z", fTargetPosZ );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
Arg:SetLFloat( "AIM_OFFSET", fAimOffset );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ³ëµåÀ§Ä¡·Î À̵¿Çϸé¼* °ø°Ý
function Command_MovingAttack_ToNode( pAIActor, u32CommandTime, pTargetActor, szAttackType, bRotateToTarget, szNode, fOffsetPosX, fOffsetPosZ, fAimOffset )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVINGATTACK_NODE" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLStr( "ATTACK_TYPE", szAttackType );
Arg:SetLBool( "ROTATE_TO_TARGET", bRotateToTarget );
Arg:SetLStr( "NODE_NAME", szNode );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
Arg:SetLFloat( "AIM_OFFSET", fAimOffset );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ¾×Å͸¦ ÇâÇØ À̵¿Çϸé¼* °ø°Ý
function Command_MovingAttack_ToActor( pAIActor, u32CommandTime, pTargetActor, szAttackType, bRotateToTarget, fOffsetPosX, fOffsetPosZ, fAimOffset )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVINGATTACK_ACTOR" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLStr( "ATTACK_TYPE", szAttackType );
Arg:SetLBool( "ROTATE_TO_TARGET", bRotateToTarget );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
Arg:SetLFloat( "AIM_OFFSET", fAimOffset );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ¾×ÅÍ ¹Ý´ë¸¦ ÇâÇØ À̵¿Çϸé¼* °ø°Ý
function Command_BackMovingAttack_ToActor( pAIActor, u32CommandTime, pTargetActor, szAttackType, bRotateToTarget, fMoveDist, fOffsetPosX, fOffsetPosZ, fAimOffset )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "BACKMOVINGATTACK_ACTOR" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLStr( "ATTACK_TYPE", szAttackType );
Arg:SetLBool( "ROTATE_TO_TARGET", bRotateToTarget );
Arg:SetLFloat( "COMMON_VALUE_3", fMoveDist );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
Arg:SetLFloat( "AIM_OFFSET", fAimOffset );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ À§Ä¡·Î À̵¿
function Command_Move_ToPos( pAIActor, u32CommandTime, fTargetPosX, fTargetPosY, fTargetPosZ, fOffsetPosX, fOffsetPosZ )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVE_POS" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetLFloat( "TARGETPOS_X", fTargetPosX );
Arg:SetLFloat( "TARGETPOS_Y", fTargetPosY );
Arg:SetLFloat( "TARGETPOS_Z", fTargetPosZ );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ³ëµåÀ§Ä¡·Î À̵¿
function Command_Move_ToNode( pAIActor, u32CommandTime, szNode, fOffsetPosX, fOffsetPosZ )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVE_NODE" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetLStr( "NODE_NAME", szNode );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
pAIActor:Command();
end
--°¡±î¿î °ø°ÝÀ§Ä¡·Î À̵¿
function Command_Move_ToAttackArea( pAIActor, u32CommandTime,fOffsetPosX, fOffsetPosZ )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVE_ATTACKAREA" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
pAIActor:Command();
end
--°¡±î¿î ¼öºñÀ§Ä¡·Î À̵¿
function Command_Move_ToDefenseArea( pAIActor, u32CommandTime,fOffsetPosX, fOffsetPosZ )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVE_DEFENSEAREA" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ¾×Å͸¦ ÇâÇØ À̵¿
function Command_Move_ToActor( pAIActor, u32CommandTime, pTargetActor, fOffsetPosX, fOffsetPosZ )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "MOVE_ACTOR" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ¾×ÅÍ ¹Ý´ë¸¦ ÇâÇØ À̵¿
function Command_BackMove_ToActor( pAIActor, u32CommandTime, pTargetActor, fMoveDist, fOffsetPosX, fOffsetPosZ )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "BACKMOVE_ACTOR" );
Arg:SetLU32( "COMMAND_TIME", u32CommandTime );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLFloat( "COMMON_VALUE_3", fMoveDist );
Arg:SetLFloat( "COMMON_VALUE_1", fOffsetPosX );
Arg:SetLFloat( "COMMON_VALUE_2", fOffsetPosZ );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ³ëµå·Î ¼ø°£ À̵¿
function Command_Teleport_ToNode( pAIActor, szNode )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "TELEPORT_NODE" );
Arg:SetLStr( "NODE_NAME", szNode );
pAIActor:Command();
end
--ÇöÀç À§Ä¡¿¡¼* ´ë±â
function Command_Stop( pAIActor )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "STOP" );
pAIActor:Command();
end
--Á×À½
function Command_Death( pAIActor )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "DEATH" );
pAIActor:Command();
end
--ȸÇÇ
function Command_Dodge( pAIActor, bLeft )
fDodgeDirValue = 1;
if bLeft == false then
fDodgeDirValue = -1;
end
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "DODGE" );
Arg:SetLFloat( "COMMON_VALUE_1", fDodgeDirValue );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ¾×Å͸¦ Á¤¸éÀ¸·Î ¹Ù¶óº¸°í ȸÇÇ
function Command_Dodge_ToActor( pAIActor, pTargetActor, bLeft )
fDodgeDirValue = 1;
if bLeft == false then
fDodgeDirValue = -1;
end
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "DODGE_ACTOR" );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLFloat( "COMMON_VALUE_1", fDodgeDirValue );
pAIActor:Command();
end
--ÁöÁ¤ÇÑ ¾×ÅÍ¿¡°Ô ¹ÙÀε彺ųÀ» »ç¿ë
function Command_SkillBind( pAIActor, pTargetActor, fAimOffset )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "SKILL_BIND" );
Arg:SetActor( "TARGET_ACTOR", pTargetActor );
Arg:SetLFloat( "AIM_OFFSET", fAimOffset );
pAIActor:Command();
end
--Åõ¸íÈ*½ºÅ³ ¿Â¿ÀÇÁ
function Command_SkillInvisible( pAIActor, bOnOff )
fOnOffValue = 1;
if bOnOff == false then
fOnOffValue = -1;
end
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "SKILL_INVISIBLE" );
Arg:SetLFloat( "COMMON_VALUE_1", fOnOffValue );
pAIActor:Command();
end
--AIÀÇ HP¸¦ º¯°æ
function Command_ChangeHP( pAIActor, fHPRate )
Arg = pAIActor:GetArg();
Arg:SetLStr( "COMMAND", "CHANGE_HP" );
Arg:SetLFloat( "COMMON_VALUE_1", fHPRate );
pAIActor:Command();
end
video:
that is somehow what i want to archieve...
05/24/2025, 19:26
#90
elite*gold: 0
Join Date: Mar 2019
Posts: 165
Received Thanks: 26
If anyone need(Only for stage 8)
Attached Files
Arcade_Host.rar
(13.5 KB, 23 views)
Similar Threads
[Release]Simple Lua Editor[Tool]
05/20/2024 - Elsword - 40 Replies
Hi guys! I have writed a simple tool in vb.net for edit .lua files, have 2 decryptions/encryptions working perfect, and open and save the files well :P
http://i.epvpimg.com/THNDf.png
Download: ElswordLuaEditor
[Selling] ✅ MWII/WZ2.0 AIO✅ CAMO EDITOR✅ 240 FOV✅ PLAYER CHAMS✅ CLAN TAG EDITOR✅ PERK EDITOR✅
12/13/2022 - Call of Duty Trading - 0 Replies
https://sellproduction.s3.eu-west-2.amazonaws.com/ store/3364/listings/bxy3u7qLIACDCaM64ih2KIEas0y2sR MhlUvr820i.gif
AIO Features:
CHAMS (PLAYER OUTLINES LIKE E$P)
FOV Changer
Class Name Editor (Colors & Symbols)
[Request] DB Editor / Client Editor / PK2 Editor.
08/30/2013 - SRO Private Server - 3 Replies
Would like to make some Updates on the Server and need some peoples to make em. - Add me on Skype : Saint.sinner8 ( will be rewarded )
All times are GMT +1. The time now is 20:16 .