feat(2.5d): integrate all classic games via dedicated terminal windows and 22 stations
This commit is contained in:
parent
99fc93c700
commit
3ae4323379
6 changed files with 904 additions and 174 deletions
|
|
@ -167,17 +167,46 @@ dancerLuckBuff dd 0
|
|||
flashTimer dd 0
|
||||
flashMessage db 128 dup(0)
|
||||
|
||||
promptDancer db "[E] CABARET - TIP $100",0
|
||||
promptSlot1 db "[E] SLOTS 777",0
|
||||
promptSlot2 db "[E] SLOTS 777",0
|
||||
promptBlackjack db "[E] BLACKJACK / 21",0
|
||||
promptPoker db "POKER - UNDER CONSTRUCTION",0
|
||||
promptRoulette db "[E] ROULETTE",0
|
||||
promptShop db "[E] BOUTIQUE",0
|
||||
promptATM db "[E] CASHIER",0
|
||||
promptBackroom db "BACKROOM - UNDER CONSTRUCTION",0
|
||||
promptDurak db "DURAK - UNDER CONSTRUCTION",0
|
||||
promptHell db "TOWER - UNDER CONSTRUCTION",0
|
||||
promptDancer db "[E] ÊÀÁÀÐÅ - ×ÀÅÂÛÅ $100",0
|
||||
promptBlackjack db "[E] ÁËÝÊÄÆÅÊ (21)",0
|
||||
promptPoker db "[E] ÏÎÊÅÐ (TEXAS HOLD'EM)",0
|
||||
promptDurak db "[E] ÊÀÐÒÛ: ÏÎÄÊÈÄÍÎÉ ÄÓÐÀÊ",0
|
||||
promptCasinoRoulette db "[E] ÅÂÐÎÏÅÉÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
promptClassicSlot db "[E] ÊËÀÑÑÈ×ÅÑÊÈÅ ÑËÎÒÛ 777",0
|
||||
promptCloverSlot db "[E] ÑËÎÒÛ CLOVERPIT (5x3)",0
|
||||
promptDice db "[E] ÈÃÐÀ Â ÊÎÑÒÈ (CRAPS)",0
|
||||
promptSkulls db "[E] ÍÀϨÐÑÒÊÈ (×ÅÐÅÏÀ)",0
|
||||
promptCoin db "[E] ÌÎÍÅÒÊÀ (ÎШË/ÐÅØÊÀ)",0
|
||||
promptSkillCheck db "[E] ÒÐÅÍÈÐÎÂÊÀ ÐÅÀÊÖÈÈ",0
|
||||
promptBuckshot db "[E] BUCKSHOT ROULETTE",0
|
||||
promptRussianRoulette db "[E] ÐÓÑÑÊÀß ÐÓËÅÒÊÀ (VIP)",0
|
||||
promptOnlineRR db "[E] ÑÅÒÅÂÀß ÐÓËÅÒÊÀ (NET)",0
|
||||
promptUmamusume db "[E] ÑÊÀ×ÊÈ ÓÌÀÌÓÑÓÌÝ",0
|
||||
promptHellTower db "[E] ÁÀØÍß ÀÄÀ (10 ÝÒÀÆÅÉ)",0
|
||||
promptShop db "[E] ÁÓÒÈÊ È ÒÀËÈÑÌÀÍÛ",0
|
||||
promptATM db "[E] ÁÀÍÊÎÌÀÒ È ÁÀËÀÍÑ",0
|
||||
promptPlayerTerminal db "[E] ÒÅÐÌÈÍÀË: ÑÒÀÒÛ È À×ÈÂÊÈ",0
|
||||
promptObserver db "[E] ÐÅÆÈÌ ÍÀÁËÞÄÀÒÅËß (ÈÈ)",0
|
||||
|
||||
szTitleBlackjack db "[KAZIK 3D CASINO] - ÁËÝÊÄÆÅÊ (21)",0
|
||||
szTitlePoker db "[KAZIK 3D CASINO] - ÏÎÊÅÐ (TEXAS HOLD'EM)",0
|
||||
szTitleDurak db "[KAZIK 3D CASINO] - ÏÎÄÊÈÄÍÎÉ ÄÓÐÀÊ",0
|
||||
szTitleCasinoRoulette db "[KAZIK 3D CASINO] - ÅÂÐÎÏÅÉÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
szTitleClassicSlot db "[KAZIK 3D CASINO] - ÊËÀÑÑÈ×ÅÑÊÈÅ ÑËÎÒÛ 777",0
|
||||
szTitleCloverSlot db "[KAZIK 3D CASINO] - ÑËÎÒ-ÌÀØÈÍÀ CLOVERPIT (5x3)",0
|
||||
szTitleDice db "[KAZIK 3D CASINO] - ÈÃÐÀ Â ÊÎÑÒÈ (CRAPS)",0
|
||||
szTitleSkulls db "[KAZIK 3D CASINO] - ÍÀϨÐÑÒÊÈ",0
|
||||
szTitleCoin db "[KAZIK 3D CASINO] - ÌÎÍÅÒÊÀ (ÎШË/ÐÅØÊÀ)",0
|
||||
szTitleSkillCheck db "[KAZIK 3D CASINO] - ÏÐÎÂÅÐÊÀ ÐÅÀÊÖÈÈ",0
|
||||
szTitleBuckshot db "[KAZIK 3D CASINO] - BUCKSHOT ROULETTE",0
|
||||
szTitleRussianRoulette db "[KAZIK 3D CASINO] - ÐÓÑÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
szTitleOnlineRR db "[KAZIK 3D CASINO] - ÑÅÒÅÂÀß ÐÓÑÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
szTitleUmamusume db "[KAZIK 3D CASINO] - ÑÊÀ×ÊÈ ÓÌÀÌÓÑÓÌÝ",0
|
||||
szTitleHellTower db "[KAZIK 3D CASINO] - ÁÀØÍß ÀÄÀ (ÒÓÐÍÈÐ)",0
|
||||
szTitleShop db "[KAZIK 3D CASINO] - ÁÓÒÈÊ È ÒÀËÈÑÌÀÍÛ",0
|
||||
szTitleATM db "[KAZIK 3D CASINO] - ÁÀÍÊÎÌÀÒ",0
|
||||
szTitleTerminal db "[KAZIK 3D CASINO] - ÒÅÐÌÈÍÀË ÈÃÐÎÊÀ",0
|
||||
szTitleObserver db "[KAZIK 3D CASINO] - ÐÅÆÈÌ ÍÀÁËÞÄÀÒÅËß (ÈÈ)",0
|
||||
|
||||
msgDancerTipped db "Âû áðîñèëè $100 òàíöîâùèöå! ÓÄÀ×À ÀÊÒÈÂÈÐÎÂÀÍÀ!",0
|
||||
msgNeedMoney db "Íåäîñòàòî÷íî äåíåã â êîøåëüêå!",0
|
||||
|
|
@ -186,7 +215,29 @@ targetHUDFormat db "
|
|||
luckHUDFormat db " ÓÄÀ×À: +",0
|
||||
controlsHUD db "WASD/Ñòðåëêè: Õîäüáà | E: Äåéñòâèå | ESC: Ìåíþ",0
|
||||
|
||||
NUM_SPRITES equ 13
|
||||
NUM_SPRITES equ 22
|
||||
|
||||
INTERACT_NONE equ 0
|
||||
INTERACT_BLACKJACK equ 1
|
||||
INTERACT_POKER equ 2
|
||||
INTERACT_SLOTS_777 equ 3
|
||||
INTERACT_ROULETTE equ 4
|
||||
INTERACT_SKULLS equ 5
|
||||
INTERACT_SHOP equ 6
|
||||
INTERACT_ATM equ 7
|
||||
INTERACT_DANCER equ 8
|
||||
INTERACT_HELL_TOWER equ 9
|
||||
INTERACT_DURAK equ 10
|
||||
INTERACT_BUCKSHOT equ 11
|
||||
INTERACT_COIN equ 12
|
||||
INTERACT_DICE equ 13
|
||||
INTERACT_SLOTS_CLOVER equ 14
|
||||
INTERACT_UMAMUSUME equ 15
|
||||
INTERACT_OBSERVER equ 16
|
||||
INTERACT_TERMINAL equ 17
|
||||
INTERACT_ONLINE_RR equ 18
|
||||
INTERACT_RUSSIAN_ROULETTE equ 19
|
||||
INTERACT_SKILL_CHECK equ 20
|
||||
ALIGN 4
|
||||
casinoSprites SpriteObject NUM_SPRITES dup(<>)
|
||||
sortedSprites dd NUM_SPRITES dup(0)
|
||||
|
|
@ -2633,18 +2684,104 @@ interaction_done:
|
|||
ret
|
||||
CheckInteractions ENDP
|
||||
|
||||
; --- LaunchClassicGame: Îòêðûòèå îòäåëüíîãî îêíà äëÿ êëàññè÷åñêîé âåðñèè èãðû ---
|
||||
LaunchClassicGame PROC uses ebx esi edi, pGameProc:DWORD, gameId:DWORD, pTitle:DWORD
|
||||
LOCAL rc3D[16]:BYTE
|
||||
LOCAL conWnd:DWORD
|
||||
LOCAL conW:DWORD, conH:DWORD, conX:DWORD, conY:DWORD
|
||||
|
||||
mov eax, gameId
|
||||
mov currentGameId, eax
|
||||
|
||||
invoke AllocConsole
|
||||
test eax, eax
|
||||
jz launch_ret
|
||||
|
||||
invoke GetStdHandle, STD_OUTPUT_HANDLE
|
||||
mov hOut, eax
|
||||
invoke GetStdHandle, STD_INPUT_HANDLE
|
||||
mov hIn, eax
|
||||
|
||||
invoke SetConsoleCP, 1251
|
||||
invoke SetConsoleOutputCP, 1251
|
||||
|
||||
cmp pTitle, 0
|
||||
je @F
|
||||
invoke SetConsoleTitleA, pTitle
|
||||
@@:
|
||||
call EnableAnsi
|
||||
call ConfigureConsoleSize
|
||||
|
||||
invoke GetConsoleWindow
|
||||
mov conWnd, eax
|
||||
test eax, eax
|
||||
jz run_game_body
|
||||
|
||||
cmp h3DWnd, 0
|
||||
je show_con_fallback
|
||||
|
||||
lea eax, rc3D
|
||||
invoke GetWindowRect, h3DWnd, eax
|
||||
mov eax, dword ptr rc3D[0]
|
||||
add eax, 40
|
||||
mov conX, eax
|
||||
mov eax, dword ptr rc3D[4]
|
||||
add eax, 40
|
||||
mov conY, eax
|
||||
mov conW, 960
|
||||
mov conH, 680
|
||||
invoke SetWindowPos, conWnd, 0, conX, conY, conW, conH, 40h ; SWP_SHOWWINDOW
|
||||
jmp set_con_focus
|
||||
|
||||
show_con_fallback:
|
||||
invoke ShowWindow, conWnd, 5 ; SW_SHOW
|
||||
set_con_focus:
|
||||
invoke SetForegroundWindow, conWnd
|
||||
invoke SetFocus, conWnd
|
||||
|
||||
run_game_body:
|
||||
call pGameProc
|
||||
|
||||
invoke FreeConsole
|
||||
mov hOut, 0
|
||||
mov hIn, 0
|
||||
|
||||
cmp h3DWnd, 0
|
||||
je cleanup_game_input
|
||||
invoke SetForegroundWindow, h3DWnd
|
||||
invoke SetFocus, h3DWnd
|
||||
|
||||
cleanup_game_input:
|
||||
mov ecx, 256
|
||||
xor eax, eax
|
||||
lea edi, keys3D
|
||||
rep stosb
|
||||
mov ecx, 256
|
||||
lea edi, pressedKeys3D
|
||||
rep stosb
|
||||
|
||||
invoke GetTickCount
|
||||
mov previousTick3D, eax
|
||||
mov frameStart3D, eax
|
||||
mov deltaTime3D, 0
|
||||
|
||||
call SaveProgress3D
|
||||
|
||||
launch_ret:
|
||||
ret
|
||||
LaunchClassicGame ENDP
|
||||
|
||||
Trigger3DInteraction PROC
|
||||
mov eax, interactTargetId
|
||||
test eax, eax
|
||||
jz @F
|
||||
jz trigger_done
|
||||
|
||||
cmp eax, 8 ; DANCER
|
||||
jne check_target_slots
|
||||
cmp eax, INTERACT_DANCER
|
||||
jne check_target_bj
|
||||
cmp bankroll, 100
|
||||
jl dancer_no_cash
|
||||
sub bankroll, 100
|
||||
inc dancerLuckBuff
|
||||
; Tips are cosmetic and must not silently change game odds.
|
||||
invoke CopyString3D, OFFSET textTips3D, OFFSET flashMessage
|
||||
mov flashTimer, 100
|
||||
invoke PlaySoundA, OFFSET soundJackpot, 0, 1
|
||||
|
|
@ -2654,42 +2791,124 @@ dancer_no_cash:
|
|||
mov flashTimer, 60
|
||||
ret
|
||||
|
||||
check_target_slots:
|
||||
cmp eax, 3 ; SLOTS
|
||||
jne check_target_bj
|
||||
mov engineMode, MODE_SLOTS
|
||||
invoke PlaySoundA, OFFSET soundClick, 0, 1
|
||||
check_target_bj:
|
||||
cmp eax, INTERACT_BLACKJACK
|
||||
jne check_target_poker
|
||||
invoke LaunchClassicGame, OFFSET Game21, 1, OFFSET szTitleBlackjack
|
||||
ret
|
||||
|
||||
check_target_bj:
|
||||
cmp eax, 1 ; BLACKJACK
|
||||
check_target_poker:
|
||||
cmp eax, INTERACT_POKER
|
||||
jne check_target_durak
|
||||
invoke LaunchClassicGame, OFFSET GamePoker, 2, OFFSET szTitlePoker
|
||||
ret
|
||||
|
||||
check_target_durak:
|
||||
cmp eax, INTERACT_DURAK
|
||||
jne check_target_slots777
|
||||
invoke LaunchClassicGame, OFFSET GameDurak, 10, OFFSET szTitleDurak
|
||||
ret
|
||||
|
||||
check_target_slots777:
|
||||
cmp eax, INTERACT_SLOTS_777
|
||||
jne check_target_slots_clover
|
||||
invoke LaunchClassicGame, OFFSET GameClassicSlot, 9, OFFSET szTitleClassicSlot
|
||||
ret
|
||||
|
||||
check_target_slots_clover:
|
||||
cmp eax, INTERACT_SLOTS_CLOVER
|
||||
jne check_target_roulette
|
||||
mov engineMode, MODE_BLACKJACK
|
||||
mov bjState, 0
|
||||
invoke LaunchClassicGame, OFFSET GameSlot, 3, OFFSET szTitleCloverSlot
|
||||
ret
|
||||
|
||||
check_target_roulette:
|
||||
cmp eax, 4 ; ROULETTE
|
||||
cmp eax, INTERACT_ROULETTE
|
||||
jne check_target_dice
|
||||
invoke LaunchClassicGame, OFFSET GameCasinoRoulette, 8, OFFSET szTitleCasinoRoulette
|
||||
ret
|
||||
|
||||
check_target_dice:
|
||||
cmp eax, INTERACT_DICE
|
||||
jne check_target_skulls
|
||||
invoke LaunchClassicGame, OFFSET GameDice, 7, OFFSET szTitleDice
|
||||
ret
|
||||
|
||||
check_target_skulls:
|
||||
cmp eax, INTERACT_SKULLS
|
||||
jne check_target_coin
|
||||
invoke LaunchClassicGame, OFFSET GameSkulls, 5, OFFSET szTitleSkulls
|
||||
ret
|
||||
|
||||
check_target_coin:
|
||||
cmp eax, INTERACT_COIN
|
||||
jne check_target_skill
|
||||
invoke LaunchClassicGame, OFFSET GameCoin, 6, OFFSET szTitleCoin
|
||||
ret
|
||||
|
||||
check_target_skill:
|
||||
cmp eax, INTERACT_SKILL_CHECK
|
||||
jne check_target_buckshot
|
||||
invoke LaunchClassicGame, OFFSET GameSkillCheck, 11, OFFSET szTitleSkillCheck
|
||||
ret
|
||||
|
||||
check_target_buckshot:
|
||||
cmp eax, INTERACT_BUCKSHOT
|
||||
jne check_target_rr
|
||||
invoke LaunchClassicGame, OFFSET GameBuckshot, 13, OFFSET szTitleBuckshot
|
||||
ret
|
||||
|
||||
check_target_rr:
|
||||
cmp eax, INTERACT_RUSSIAN_ROULETTE
|
||||
jne check_target_online_rr
|
||||
invoke LaunchClassicGame, OFFSET GameRoulette, 4, OFFSET szTitleRussianRoulette
|
||||
ret
|
||||
|
||||
check_target_online_rr:
|
||||
cmp eax, INTERACT_ONLINE_RR
|
||||
jne check_target_umamusume
|
||||
invoke LaunchClassicGame, OFFSET GameOnlineCasino, 20, OFFSET szTitleOnlineRR
|
||||
ret
|
||||
|
||||
check_target_umamusume:
|
||||
cmp eax, INTERACT_UMAMUSUME
|
||||
jne check_target_hell
|
||||
invoke LaunchClassicGame, OFFSET GameUmamusume, 21, OFFSET szTitleUmamusume
|
||||
ret
|
||||
|
||||
check_target_hell:
|
||||
cmp eax, INTERACT_HELL_TOWER
|
||||
jne check_target_shop
|
||||
mov engineMode, MODE_ROULETTE
|
||||
mov roulState, 0
|
||||
invoke LaunchClassicGame, OFFSET GameTournament, 666, OFFSET szTitleHellTower
|
||||
ret
|
||||
|
||||
check_target_shop:
|
||||
cmp eax, 6 ; SHOP
|
||||
cmp eax, INTERACT_SHOP
|
||||
jne check_target_atm
|
||||
mov engineMode, MODE_SHOP
|
||||
invoke LaunchClassicGame, OFFSET GameShop, 0, OFFSET szTitleShop
|
||||
ret
|
||||
|
||||
check_target_atm:
|
||||
cmp eax, 7 ; ATM
|
||||
jne target_unported
|
||||
cmp eax, INTERACT_ATM
|
||||
jne check_target_terminal
|
||||
mov engineMode, MODE_ATM
|
||||
ret
|
||||
|
||||
check_target_terminal:
|
||||
cmp eax, INTERACT_TERMINAL
|
||||
jne check_target_observer
|
||||
invoke LaunchClassicGame, OFFSET GamePlayerTerminal, 0, OFFSET szTitleTerminal
|
||||
ret
|
||||
|
||||
check_target_observer:
|
||||
cmp eax, INTERACT_OBSERVER
|
||||
jne target_unported
|
||||
invoke LaunchClassicGame, OFFSET GameObserver, 14, OFFSET szTitleObserver
|
||||
ret
|
||||
|
||||
target_unported:
|
||||
invoke CopyString3D, OFFSET textUnavailable3D, OFFSET flashMessage
|
||||
mov flashTimer, 150
|
||||
@@:
|
||||
trigger_done:
|
||||
ret
|
||||
Trigger3DInteraction ENDP
|
||||
|
||||
|
|
@ -2721,7 +2940,7 @@ init_sprites_table:
|
|||
mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].interactId, 8
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].interactId, INTERACT_DANCER
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer
|
||||
|
||||
; Sprite 1: VIP Dancer 2 (Center Stage Star)
|
||||
|
|
@ -2732,7 +2951,7 @@ init_sprites_table:
|
|||
mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].interactId, 8
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].interactId, INTERACT_DANCER
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer
|
||||
|
||||
; Sprite 2: VIP Dancer 3 (Stage Right)
|
||||
|
|
@ -2743,21 +2962,21 @@ init_sprites_table:
|
|||
mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].interactId, 8
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].interactId, INTERACT_DANCER
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer
|
||||
|
||||
; Sprite 3: Blackjack Table with Dealer (Front Center Left)
|
||||
; Sprite 3: VIP Blackjack (Front Center Left)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].posY, (10 * FP_1)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].interactId, 1
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].interactId, INTERACT_BLACKJACK
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack
|
||||
|
||||
; Sprite 4: Roulette Table (Front Center)
|
||||
; Sprite 4: European Roulette Table (Front Center)
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1)
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31
|
||||
|
|
@ -2765,96 +2984,195 @@ init_sprites_table:
|
|||
mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].interactId, 4
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].interactId, INTERACT_ROULETTE
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptCasinoRoulette
|
||||
|
||||
; Sprite 5: Poker Table (Front Center Right)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posX, (21 * FP_1)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posY, (10 * FP_1)
|
||||
; Sprite 5: Texas Hold'em Poker Table (Front Center Right)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posX, (20 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].interactId, 1
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].interactId, INTERACT_POKER
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker
|
||||
|
||||
; Sprite 6: Slot Machine 1 (West Arcade)
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
; Sprite 6: Podkidnoy Durak Card Table
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].posX, (24 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 24
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 3
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 8
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].interactId, 3
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].interactId, INTERACT_DURAK
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptDurak
|
||||
|
||||
; Sprite 7: Slot Machine 2 (CloverPit)
|
||||
; Sprite 7: Classic Slots 777 (West Arcade 1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].posY, (11 * FP_1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 1
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].interactId, 3
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot2
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_777
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptClassicSlot
|
||||
|
||||
; Sprite 8: Slot Machine 3
|
||||
; Sprite 8: CloverPit Slots 5x3 (West Arcade 2)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].posY, (14 * FP_1)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].posY, (11 * FP_1)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 2
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 1
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].interactId, 3
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_CLOVER
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptCloverSlot
|
||||
|
||||
; Sprite 9: Bartender / Bar Counter (East Wing)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posY, (12 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 32
|
||||
; Sprite 9: Craps & Dice Table (West Arcade 3)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posY, (14 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].interactId, 6
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptShop
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].interactId, INTERACT_DICE
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptDice
|
||||
|
||||
; Sprite 10: ATM Bank Terminal (East Wing)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posY, (16 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 33
|
||||
; Sprite 10: Skulls & Cups Table
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posX, (10 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].interactId, 7
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptATM
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].interactId, INTERACT_SKULLS
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptSkulls
|
||||
|
||||
; Sprite 11: Underground Table (South Wing)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posY, (24 * FP_1)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 34
|
||||
; Sprite 11: Coin Toss Stand
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posX, (14 * FP_1)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].interactId, 5
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptBackroom
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].interactId, INTERACT_COIN
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptCoin
|
||||
|
||||
; Sprite 12: Secret Demon Portal (South Wing)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posY, (29 * FP_1)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 4
|
||||
; Sprite 12: Skill Check Stand
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posX, (18 * FP_1)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].interactId, 9
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptHell
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].interactId, INTERACT_SKILL_CHECK
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptSkillCheck
|
||||
|
||||
; Sprite 13: Umamusume Derby Lounge
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].posX, (22 * FP_1)
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].interactId, INTERACT_UMAMUSUME
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].promptPtr, OFFSET promptUmamusume
|
||||
|
||||
; Sprite 14: Boutique & Shop (East Wing)
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].posY, (12 * FP_1)
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].baseTexId, 32
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].interactId, INTERACT_SHOP
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].promptPtr, OFFSET promptShop
|
||||
|
||||
; Sprite 15: Cashier & ATM (East Wing)
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].posY, (16 * FP_1)
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].baseTexId, 33
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].interactId, INTERACT_ATM
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].promptPtr, OFFSET promptATM
|
||||
|
||||
; Sprite 16: Player Terminal (East Wing)
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].posY, (20 * FP_1)
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].baseTexId, 33
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].interactId, INTERACT_TERMINAL
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].promptPtr, OFFSET promptPlayerTerminal
|
||||
|
||||
; Sprite 17: Buckshot Roulette (South-West)
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].posX, (12 * FP_1)
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].posY, (22 * FP_1)
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].interactId, INTERACT_BUCKSHOT
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].promptPtr, OFFSET promptBuckshot
|
||||
|
||||
; Sprite 18: Observer Lounge (South-East)
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].posX, (20 * FP_1)
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].posY, (22 * FP_1)
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].interactId, INTERACT_OBSERVER
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].promptPtr, OFFSET promptObserver
|
||||
|
||||
; Sprite 19: Russian Roulette (Backroom Entrance)
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].posX, (16 * FP_1)
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].posY, (25 * FP_1)
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].baseTexId, 34
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].interactId, INTERACT_RUSSIAN_ROULETTE
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].promptPtr, OFFSET promptRussianRoulette
|
||||
|
||||
; Sprite 20: Online Russian Roulette (Backroom Secret Terminal)
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].posX, (18 * FP_1)
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].posY, (25 * FP_1)
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].baseTexId, 34
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].interactId, INTERACT_ONLINE_RR
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].promptPtr, OFFSET promptOnlineRR
|
||||
|
||||
; Sprite 21: Hell Tower Portal (South Wing Deep End)
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].posY, (29 * FP_1)
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].baseTexId, 4
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].interactId, INTERACT_HELL_TOWER
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].promptPtr, OFFSET promptHellTower
|
||||
|
||||
mov eax, 1
|
||||
jmp init_return
|
||||
|
|
|
|||
|
|
@ -72,6 +72,13 @@ GetConsoleScreenBufferInfo PROTO :DWORD, :DWORD
|
|||
GetConsoleMode PROTO :DWORD, :DWORD
|
||||
SetConsoleMode PROTO :DWORD, :DWORD
|
||||
FillConsoleOutputCharacterA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
|
||||
AllocConsole PROTO
|
||||
FreeConsole PROTO
|
||||
GetConsoleWindow PROTO
|
||||
SetConsoleTitleA PROTO :DWORD
|
||||
GetWindowRect PROTO :DWORD, :DWORD
|
||||
SetWindowPos PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
|
||||
SetFocus PROTO :DWORD
|
||||
mciSendStringA PROTO :DWORD, :DWORD, :DWORD, :DWORD
|
||||
waveOutSetVolume PROTO :DWORD, :DWORD
|
||||
AnimFrameDelay PROTO :DWORD
|
||||
|
|
@ -14925,6 +14932,46 @@ uma_exit:
|
|||
ret
|
||||
GameUmamusume ENDP
|
||||
|
||||
; --- GamePlayerTerminal: Èãðîâîé òåðìèíàë (ñòàòèñòèêà, à÷èâêè, êâåñòû) ---
|
||||
titleTerminal db "=== ÒÅÐÌÈÍÀË ÈÃÐÎÊÀ ===",13,10,0
|
||||
textTerminalMenu db "1. Äîñòèæåíèÿ",13,10,"2. Ñòàòèñòèêà ïî èãðàì",13,10,"3. Åæåäíåâíûå çàäàíèÿ",13,10,"4. Ãëàâíîå ìåíþ è ÷èòû",13,10,"0. Íàçàä â êàçèíî",13,10,0
|
||||
|
||||
GamePlayerTerminal PROC
|
||||
terminal_loop:
|
||||
call ClearView
|
||||
invoke PrintTitleColor, OFFSET titleTerminal
|
||||
invoke PrintStr, OFFSET textTerminalMenu
|
||||
invoke PrintStr, OFFSET choiceText
|
||||
call ReadKey
|
||||
cmp al, '1'
|
||||
je term_ach
|
||||
cmp al, '2'
|
||||
je term_stats
|
||||
cmp al, '3'
|
||||
je term_daily
|
||||
cmp al, '4'
|
||||
je term_classic_menu
|
||||
cmp al, '0'
|
||||
je term_exit
|
||||
cmp al, 1Bh
|
||||
je term_exit
|
||||
jmp terminal_loop
|
||||
term_ach:
|
||||
call GameAchievements
|
||||
jmp terminal_loop
|
||||
term_stats:
|
||||
call GameStatsByGame
|
||||
jmp terminal_loop
|
||||
term_daily:
|
||||
call GameDailyTasks
|
||||
jmp terminal_loop
|
||||
term_classic_menu:
|
||||
call MainMenu
|
||||
jmp terminal_loop
|
||||
term_exit:
|
||||
ret
|
||||
GamePlayerTerminal ENDP
|
||||
|
||||
include casino3d.inc
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
492
casino3d.inc
492
casino3d.inc
|
|
@ -167,17 +167,46 @@ dancerLuckBuff dd 0
|
|||
flashTimer dd 0
|
||||
flashMessage db 128 dup(0)
|
||||
|
||||
promptDancer db "[E] CABARET - TIP $100",0
|
||||
promptSlot1 db "[E] SLOTS 777",0
|
||||
promptSlot2 db "[E] SLOTS 777",0
|
||||
promptBlackjack db "[E] BLACKJACK / 21",0
|
||||
promptPoker db "POKER - UNDER CONSTRUCTION",0
|
||||
promptRoulette db "[E] ROULETTE",0
|
||||
promptShop db "[E] BOUTIQUE",0
|
||||
promptATM db "[E] CASHIER",0
|
||||
promptBackroom db "BACKROOM - UNDER CONSTRUCTION",0
|
||||
promptDurak db "DURAK - UNDER CONSTRUCTION",0
|
||||
promptHell db "TOWER - UNDER CONSTRUCTION",0
|
||||
promptDancer db "[E] ÊÀÁÀÐÅ - ×ÀÅÂÛÅ $100",0
|
||||
promptBlackjack db "[E] ÁËÝÊÄÆÅÊ (21)",0
|
||||
promptPoker db "[E] ÏÎÊÅÐ (TEXAS HOLD'EM)",0
|
||||
promptDurak db "[E] ÊÀÐÒÛ: ÏÎÄÊÈÄÍÎÉ ÄÓÐÀÊ",0
|
||||
promptCasinoRoulette db "[E] ÅÂÐÎÏÅÉÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
promptClassicSlot db "[E] ÊËÀÑÑÈ×ÅÑÊÈÅ ÑËÎÒÛ 777",0
|
||||
promptCloverSlot db "[E] ÑËÎÒÛ CLOVERPIT (5x3)",0
|
||||
promptDice db "[E] ÈÃÐÀ Â ÊÎÑÒÈ (CRAPS)",0
|
||||
promptSkulls db "[E] ÍÀϨÐÑÒÊÈ (×ÅÐÅÏÀ)",0
|
||||
promptCoin db "[E] ÌÎÍÅÒÊÀ (ÎШË/ÐÅØÊÀ)",0
|
||||
promptSkillCheck db "[E] ÒÐÅÍÈÐÎÂÊÀ ÐÅÀÊÖÈÈ",0
|
||||
promptBuckshot db "[E] BUCKSHOT ROULETTE",0
|
||||
promptRussianRoulette db "[E] ÐÓÑÑÊÀß ÐÓËÅÒÊÀ (VIP)",0
|
||||
promptOnlineRR db "[E] ÑÅÒÅÂÀß ÐÓËÅÒÊÀ (NET)",0
|
||||
promptUmamusume db "[E] ÑÊÀ×ÊÈ ÓÌÀÌÓÑÓÌÝ",0
|
||||
promptHellTower db "[E] ÁÀØÍß ÀÄÀ (10 ÝÒÀÆÅÉ)",0
|
||||
promptShop db "[E] ÁÓÒÈÊ È ÒÀËÈÑÌÀÍÛ",0
|
||||
promptATM db "[E] ÁÀÍÊÎÌÀÒ È ÁÀËÀÍÑ",0
|
||||
promptPlayerTerminal db "[E] ÒÅÐÌÈÍÀË: ÑÒÀÒÛ È À×ÈÂÊÈ",0
|
||||
promptObserver db "[E] ÐÅÆÈÌ ÍÀÁËÞÄÀÒÅËß (ÈÈ)",0
|
||||
|
||||
szTitleBlackjack db "[KAZIK 3D CASINO] - ÁËÝÊÄÆÅÊ (21)",0
|
||||
szTitlePoker db "[KAZIK 3D CASINO] - ÏÎÊÅÐ (TEXAS HOLD'EM)",0
|
||||
szTitleDurak db "[KAZIK 3D CASINO] - ÏÎÄÊÈÄÍÎÉ ÄÓÐÀÊ",0
|
||||
szTitleCasinoRoulette db "[KAZIK 3D CASINO] - ÅÂÐÎÏÅÉÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
szTitleClassicSlot db "[KAZIK 3D CASINO] - ÊËÀÑÑÈ×ÅÑÊÈÅ ÑËÎÒÛ 777",0
|
||||
szTitleCloverSlot db "[KAZIK 3D CASINO] - ÑËÎÒ-ÌÀØÈÍÀ CLOVERPIT (5x3)",0
|
||||
szTitleDice db "[KAZIK 3D CASINO] - ÈÃÐÀ Â ÊÎÑÒÈ (CRAPS)",0
|
||||
szTitleSkulls db "[KAZIK 3D CASINO] - ÍÀϨÐÑÒÊÈ",0
|
||||
szTitleCoin db "[KAZIK 3D CASINO] - ÌÎÍÅÒÊÀ (ÎШË/ÐÅØÊÀ)",0
|
||||
szTitleSkillCheck db "[KAZIK 3D CASINO] - ÏÐÎÂÅÐÊÀ ÐÅÀÊÖÈÈ",0
|
||||
szTitleBuckshot db "[KAZIK 3D CASINO] - BUCKSHOT ROULETTE",0
|
||||
szTitleRussianRoulette db "[KAZIK 3D CASINO] - ÐÓÑÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
szTitleOnlineRR db "[KAZIK 3D CASINO] - ÑÅÒÅÂÀß ÐÓÑÑÊÀß ÐÓËÅÒÊÀ",0
|
||||
szTitleUmamusume db "[KAZIK 3D CASINO] - ÑÊÀ×ÊÈ ÓÌÀÌÓÑÓÌÝ",0
|
||||
szTitleHellTower db "[KAZIK 3D CASINO] - ÁÀØÍß ÀÄÀ (ÒÓÐÍÈÐ)",0
|
||||
szTitleShop db "[KAZIK 3D CASINO] - ÁÓÒÈÊ È ÒÀËÈÑÌÀÍÛ",0
|
||||
szTitleATM db "[KAZIK 3D CASINO] - ÁÀÍÊÎÌÀÒ",0
|
||||
szTitleTerminal db "[KAZIK 3D CASINO] - ÒÅÐÌÈÍÀË ÈÃÐÎÊÀ",0
|
||||
szTitleObserver db "[KAZIK 3D CASINO] - ÐÅÆÈÌ ÍÀÁËÞÄÀÒÅËß (ÈÈ)",0
|
||||
|
||||
msgDancerTipped db "Âû áðîñèëè $100 òàíöîâùèöå! ÓÄÀ×À ÀÊÒÈÂÈÐÎÂÀÍÀ!",0
|
||||
msgNeedMoney db "Íåäîñòàòî÷íî äåíåã â êîøåëüêå!",0
|
||||
|
|
@ -186,7 +215,29 @@ targetHUDFormat db "
|
|||
luckHUDFormat db " ÓÄÀ×À: +",0
|
||||
controlsHUD db "WASD/Ñòðåëêè: Õîäüáà | E: Äåéñòâèå | ESC: Ìåíþ",0
|
||||
|
||||
NUM_SPRITES equ 13
|
||||
NUM_SPRITES equ 22
|
||||
|
||||
INTERACT_NONE equ 0
|
||||
INTERACT_BLACKJACK equ 1
|
||||
INTERACT_POKER equ 2
|
||||
INTERACT_SLOTS_777 equ 3
|
||||
INTERACT_ROULETTE equ 4
|
||||
INTERACT_SKULLS equ 5
|
||||
INTERACT_SHOP equ 6
|
||||
INTERACT_ATM equ 7
|
||||
INTERACT_DANCER equ 8
|
||||
INTERACT_HELL_TOWER equ 9
|
||||
INTERACT_DURAK equ 10
|
||||
INTERACT_BUCKSHOT equ 11
|
||||
INTERACT_COIN equ 12
|
||||
INTERACT_DICE equ 13
|
||||
INTERACT_SLOTS_CLOVER equ 14
|
||||
INTERACT_UMAMUSUME equ 15
|
||||
INTERACT_OBSERVER equ 16
|
||||
INTERACT_TERMINAL equ 17
|
||||
INTERACT_ONLINE_RR equ 18
|
||||
INTERACT_RUSSIAN_ROULETTE equ 19
|
||||
INTERACT_SKILL_CHECK equ 20
|
||||
ALIGN 4
|
||||
casinoSprites SpriteObject NUM_SPRITES dup(<>)
|
||||
sortedSprites dd NUM_SPRITES dup(0)
|
||||
|
|
@ -2633,18 +2684,104 @@ interaction_done:
|
|||
ret
|
||||
CheckInteractions ENDP
|
||||
|
||||
; --- LaunchClassicGame: Îòêðûòèå îòäåëüíîãî îêíà äëÿ êëàññè÷åñêîé âåðñèè èãðû ---
|
||||
LaunchClassicGame PROC uses ebx esi edi, pGameProc:DWORD, gameId:DWORD, pTitle:DWORD
|
||||
LOCAL rc3D[16]:BYTE
|
||||
LOCAL conWnd:DWORD
|
||||
LOCAL conW:DWORD, conH:DWORD, conX:DWORD, conY:DWORD
|
||||
|
||||
mov eax, gameId
|
||||
mov currentGameId, eax
|
||||
|
||||
invoke AllocConsole
|
||||
test eax, eax
|
||||
jz launch_ret
|
||||
|
||||
invoke GetStdHandle, STD_OUTPUT_HANDLE
|
||||
mov hOut, eax
|
||||
invoke GetStdHandle, STD_INPUT_HANDLE
|
||||
mov hIn, eax
|
||||
|
||||
invoke SetConsoleCP, 1251
|
||||
invoke SetConsoleOutputCP, 1251
|
||||
|
||||
cmp pTitle, 0
|
||||
je @F
|
||||
invoke SetConsoleTitleA, pTitle
|
||||
@@:
|
||||
call EnableAnsi
|
||||
call ConfigureConsoleSize
|
||||
|
||||
invoke GetConsoleWindow
|
||||
mov conWnd, eax
|
||||
test eax, eax
|
||||
jz run_game_body
|
||||
|
||||
cmp h3DWnd, 0
|
||||
je show_con_fallback
|
||||
|
||||
lea eax, rc3D
|
||||
invoke GetWindowRect, h3DWnd, eax
|
||||
mov eax, dword ptr rc3D[0]
|
||||
add eax, 40
|
||||
mov conX, eax
|
||||
mov eax, dword ptr rc3D[4]
|
||||
add eax, 40
|
||||
mov conY, eax
|
||||
mov conW, 960
|
||||
mov conH, 680
|
||||
invoke SetWindowPos, conWnd, 0, conX, conY, conW, conH, 40h ; SWP_SHOWWINDOW
|
||||
jmp set_con_focus
|
||||
|
||||
show_con_fallback:
|
||||
invoke ShowWindow, conWnd, 5 ; SW_SHOW
|
||||
set_con_focus:
|
||||
invoke SetForegroundWindow, conWnd
|
||||
invoke SetFocus, conWnd
|
||||
|
||||
run_game_body:
|
||||
call pGameProc
|
||||
|
||||
invoke FreeConsole
|
||||
mov hOut, 0
|
||||
mov hIn, 0
|
||||
|
||||
cmp h3DWnd, 0
|
||||
je cleanup_game_input
|
||||
invoke SetForegroundWindow, h3DWnd
|
||||
invoke SetFocus, h3DWnd
|
||||
|
||||
cleanup_game_input:
|
||||
mov ecx, 256
|
||||
xor eax, eax
|
||||
lea edi, keys3D
|
||||
rep stosb
|
||||
mov ecx, 256
|
||||
lea edi, pressedKeys3D
|
||||
rep stosb
|
||||
|
||||
invoke GetTickCount
|
||||
mov previousTick3D, eax
|
||||
mov frameStart3D, eax
|
||||
mov deltaTime3D, 0
|
||||
|
||||
call SaveProgress3D
|
||||
|
||||
launch_ret:
|
||||
ret
|
||||
LaunchClassicGame ENDP
|
||||
|
||||
Trigger3DInteraction PROC
|
||||
mov eax, interactTargetId
|
||||
test eax, eax
|
||||
jz @F
|
||||
jz trigger_done
|
||||
|
||||
cmp eax, 8 ; DANCER
|
||||
jne check_target_slots
|
||||
cmp eax, INTERACT_DANCER
|
||||
jne check_target_bj
|
||||
cmp bankroll, 100
|
||||
jl dancer_no_cash
|
||||
sub bankroll, 100
|
||||
inc dancerLuckBuff
|
||||
; Tips are cosmetic and must not silently change game odds.
|
||||
invoke CopyString3D, OFFSET textTips3D, OFFSET flashMessage
|
||||
mov flashTimer, 100
|
||||
invoke PlaySoundA, OFFSET soundJackpot, 0, 1
|
||||
|
|
@ -2654,42 +2791,124 @@ dancer_no_cash:
|
|||
mov flashTimer, 60
|
||||
ret
|
||||
|
||||
check_target_slots:
|
||||
cmp eax, 3 ; SLOTS
|
||||
jne check_target_bj
|
||||
mov engineMode, MODE_SLOTS
|
||||
invoke PlaySoundA, OFFSET soundClick, 0, 1
|
||||
check_target_bj:
|
||||
cmp eax, INTERACT_BLACKJACK
|
||||
jne check_target_poker
|
||||
invoke LaunchClassicGame, OFFSET Game21, 1, OFFSET szTitleBlackjack
|
||||
ret
|
||||
|
||||
check_target_bj:
|
||||
cmp eax, 1 ; BLACKJACK
|
||||
check_target_poker:
|
||||
cmp eax, INTERACT_POKER
|
||||
jne check_target_durak
|
||||
invoke LaunchClassicGame, OFFSET GamePoker, 2, OFFSET szTitlePoker
|
||||
ret
|
||||
|
||||
check_target_durak:
|
||||
cmp eax, INTERACT_DURAK
|
||||
jne check_target_slots777
|
||||
invoke LaunchClassicGame, OFFSET GameDurak, 10, OFFSET szTitleDurak
|
||||
ret
|
||||
|
||||
check_target_slots777:
|
||||
cmp eax, INTERACT_SLOTS_777
|
||||
jne check_target_slots_clover
|
||||
invoke LaunchClassicGame, OFFSET GameClassicSlot, 9, OFFSET szTitleClassicSlot
|
||||
ret
|
||||
|
||||
check_target_slots_clover:
|
||||
cmp eax, INTERACT_SLOTS_CLOVER
|
||||
jne check_target_roulette
|
||||
mov engineMode, MODE_BLACKJACK
|
||||
mov bjState, 0
|
||||
invoke LaunchClassicGame, OFFSET GameSlot, 3, OFFSET szTitleCloverSlot
|
||||
ret
|
||||
|
||||
check_target_roulette:
|
||||
cmp eax, 4 ; ROULETTE
|
||||
cmp eax, INTERACT_ROULETTE
|
||||
jne check_target_dice
|
||||
invoke LaunchClassicGame, OFFSET GameCasinoRoulette, 8, OFFSET szTitleCasinoRoulette
|
||||
ret
|
||||
|
||||
check_target_dice:
|
||||
cmp eax, INTERACT_DICE
|
||||
jne check_target_skulls
|
||||
invoke LaunchClassicGame, OFFSET GameDice, 7, OFFSET szTitleDice
|
||||
ret
|
||||
|
||||
check_target_skulls:
|
||||
cmp eax, INTERACT_SKULLS
|
||||
jne check_target_coin
|
||||
invoke LaunchClassicGame, OFFSET GameSkulls, 5, OFFSET szTitleSkulls
|
||||
ret
|
||||
|
||||
check_target_coin:
|
||||
cmp eax, INTERACT_COIN
|
||||
jne check_target_skill
|
||||
invoke LaunchClassicGame, OFFSET GameCoin, 6, OFFSET szTitleCoin
|
||||
ret
|
||||
|
||||
check_target_skill:
|
||||
cmp eax, INTERACT_SKILL_CHECK
|
||||
jne check_target_buckshot
|
||||
invoke LaunchClassicGame, OFFSET GameSkillCheck, 11, OFFSET szTitleSkillCheck
|
||||
ret
|
||||
|
||||
check_target_buckshot:
|
||||
cmp eax, INTERACT_BUCKSHOT
|
||||
jne check_target_rr
|
||||
invoke LaunchClassicGame, OFFSET GameBuckshot, 13, OFFSET szTitleBuckshot
|
||||
ret
|
||||
|
||||
check_target_rr:
|
||||
cmp eax, INTERACT_RUSSIAN_ROULETTE
|
||||
jne check_target_online_rr
|
||||
invoke LaunchClassicGame, OFFSET GameRoulette, 4, OFFSET szTitleRussianRoulette
|
||||
ret
|
||||
|
||||
check_target_online_rr:
|
||||
cmp eax, INTERACT_ONLINE_RR
|
||||
jne check_target_umamusume
|
||||
invoke LaunchClassicGame, OFFSET GameOnlineCasino, 20, OFFSET szTitleOnlineRR
|
||||
ret
|
||||
|
||||
check_target_umamusume:
|
||||
cmp eax, INTERACT_UMAMUSUME
|
||||
jne check_target_hell
|
||||
invoke LaunchClassicGame, OFFSET GameUmamusume, 21, OFFSET szTitleUmamusume
|
||||
ret
|
||||
|
||||
check_target_hell:
|
||||
cmp eax, INTERACT_HELL_TOWER
|
||||
jne check_target_shop
|
||||
mov engineMode, MODE_ROULETTE
|
||||
mov roulState, 0
|
||||
invoke LaunchClassicGame, OFFSET GameTournament, 666, OFFSET szTitleHellTower
|
||||
ret
|
||||
|
||||
check_target_shop:
|
||||
cmp eax, 6 ; SHOP
|
||||
cmp eax, INTERACT_SHOP
|
||||
jne check_target_atm
|
||||
mov engineMode, MODE_SHOP
|
||||
invoke LaunchClassicGame, OFFSET GameShop, 0, OFFSET szTitleShop
|
||||
ret
|
||||
|
||||
check_target_atm:
|
||||
cmp eax, 7 ; ATM
|
||||
jne target_unported
|
||||
cmp eax, INTERACT_ATM
|
||||
jne check_target_terminal
|
||||
mov engineMode, MODE_ATM
|
||||
ret
|
||||
|
||||
check_target_terminal:
|
||||
cmp eax, INTERACT_TERMINAL
|
||||
jne check_target_observer
|
||||
invoke LaunchClassicGame, OFFSET GamePlayerTerminal, 0, OFFSET szTitleTerminal
|
||||
ret
|
||||
|
||||
check_target_observer:
|
||||
cmp eax, INTERACT_OBSERVER
|
||||
jne target_unported
|
||||
invoke LaunchClassicGame, OFFSET GameObserver, 14, OFFSET szTitleObserver
|
||||
ret
|
||||
|
||||
target_unported:
|
||||
invoke CopyString3D, OFFSET textUnavailable3D, OFFSET flashMessage
|
||||
mov flashTimer, 150
|
||||
@@:
|
||||
trigger_done:
|
||||
ret
|
||||
Trigger3DInteraction ENDP
|
||||
|
||||
|
|
@ -2721,7 +2940,7 @@ init_sprites_table:
|
|||
mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].interactId, 8
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].interactId, INTERACT_DANCER
|
||||
mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer
|
||||
|
||||
; Sprite 1: VIP Dancer 2 (Center Stage Star)
|
||||
|
|
@ -2732,7 +2951,7 @@ init_sprites_table:
|
|||
mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].interactId, 8
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].interactId, INTERACT_DANCER
|
||||
mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer
|
||||
|
||||
; Sprite 2: VIP Dancer 3 (Stage Right)
|
||||
|
|
@ -2743,21 +2962,21 @@ init_sprites_table:
|
|||
mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].interactId, 8
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].interactId, INTERACT_DANCER
|
||||
mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer
|
||||
|
||||
; Sprite 3: Blackjack Table with Dealer (Front Center Left)
|
||||
; Sprite 3: VIP Blackjack (Front Center Left)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].posY, (10 * FP_1)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].interactId, 1
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].interactId, INTERACT_BLACKJACK
|
||||
mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack
|
||||
|
||||
; Sprite 4: Roulette Table (Front Center)
|
||||
; Sprite 4: European Roulette Table (Front Center)
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1)
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31
|
||||
|
|
@ -2765,96 +2984,195 @@ init_sprites_table:
|
|||
mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].interactId, 4
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].interactId, INTERACT_ROULETTE
|
||||
mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptCasinoRoulette
|
||||
|
||||
; Sprite 5: Poker Table (Front Center Right)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posX, (21 * FP_1)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posY, (10 * FP_1)
|
||||
; Sprite 5: Texas Hold'em Poker Table (Front Center Right)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posX, (20 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].interactId, 1
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].interactId, INTERACT_POKER
|
||||
mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker
|
||||
|
||||
; Sprite 6: Slot Machine 1 (West Arcade)
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
; Sprite 6: Podkidnoy Durak Card Table
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].posX, (24 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 24
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 3
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 8
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].interactId, 3
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].interactId, INTERACT_DURAK
|
||||
mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptDurak
|
||||
|
||||
; Sprite 7: Slot Machine 2 (CloverPit)
|
||||
; Sprite 7: Classic Slots 777 (West Arcade 1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].posY, (11 * FP_1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].posY, (8 * FP_1)
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 1
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].interactId, 3
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot2
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_777
|
||||
mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptClassicSlot
|
||||
|
||||
; Sprite 8: Slot Machine 3
|
||||
; Sprite 8: CloverPit Slots 5x3 (West Arcade 2)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].posY, (14 * FP_1)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].posY, (11 * FP_1)
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 2
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 1
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].interactId, 3
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_CLOVER
|
||||
mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptCloverSlot
|
||||
|
||||
; Sprite 9: Bartender / Bar Counter (East Wing)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posY, (12 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 32
|
||||
; Sprite 9: Craps & Dice Table (West Arcade 3)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posX, (6 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].posY, (14 * FP_1)
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].interactId, 6
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptShop
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].interactId, INTERACT_DICE
|
||||
mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptDice
|
||||
|
||||
; Sprite 10: ATM Bank Terminal (East Wing)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posY, (16 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 33
|
||||
; Sprite 10: Skulls & Cups Table
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posX, (10 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].interactId, 7
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptATM
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].interactId, INTERACT_SKULLS
|
||||
mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptSkulls
|
||||
|
||||
; Sprite 11: Underground Table (South Wing)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posY, (24 * FP_1)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 34
|
||||
; Sprite 11: Coin Toss Stand
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posX, (14 * FP_1)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].interactId, 5
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptBackroom
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].interactId, INTERACT_COIN
|
||||
mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptCoin
|
||||
|
||||
; Sprite 12: Secret Demon Portal (South Wing)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posY, (29 * FP_1)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 4
|
||||
; Sprite 12: Skill Check Stand
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posX, (18 * FP_1)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].interactId, 9
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptHell
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].interactId, INTERACT_SKILL_CHECK
|
||||
mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptSkillCheck
|
||||
|
||||
; Sprite 13: Umamusume Derby Lounge
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].posX, (22 * FP_1)
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].posY, (15 * FP_1)
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].interactId, INTERACT_UMAMUSUME
|
||||
mov casinoSprites[13*SIZEOF SpriteObject].promptPtr, OFFSET promptUmamusume
|
||||
|
||||
; Sprite 14: Boutique & Shop (East Wing)
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].posY, (12 * FP_1)
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].baseTexId, 32
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].interactId, INTERACT_SHOP
|
||||
mov casinoSprites[14*SIZEOF SpriteObject].promptPtr, OFFSET promptShop
|
||||
|
||||
; Sprite 15: Cashier & ATM (East Wing)
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].posY, (16 * FP_1)
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].baseTexId, 33
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].interactId, INTERACT_ATM
|
||||
mov casinoSprites[15*SIZEOF SpriteObject].promptPtr, OFFSET promptATM
|
||||
|
||||
; Sprite 16: Player Terminal (East Wing)
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].posX, (26 * FP_1)
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].posY, (20 * FP_1)
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].baseTexId, 33
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].interactId, INTERACT_TERMINAL
|
||||
mov casinoSprites[16*SIZEOF SpriteObject].promptPtr, OFFSET promptPlayerTerminal
|
||||
|
||||
; Sprite 17: Buckshot Roulette (South-West)
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].posX, (12 * FP_1)
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].posY, (22 * FP_1)
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].interactId, INTERACT_BUCKSHOT
|
||||
mov casinoSprites[17*SIZEOF SpriteObject].promptPtr, OFFSET promptBuckshot
|
||||
|
||||
; Sprite 18: Observer Lounge (South-East)
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].posX, (20 * FP_1)
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].posY, (22 * FP_1)
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].baseTexId, 30
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].interactId, INTERACT_OBSERVER
|
||||
mov casinoSprites[18*SIZEOF SpriteObject].promptPtr, OFFSET promptObserver
|
||||
|
||||
; Sprite 19: Russian Roulette (Backroom Entrance)
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].posX, (16 * FP_1)
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].posY, (25 * FP_1)
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].baseTexId, 34
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].interactId, INTERACT_RUSSIAN_ROULETTE
|
||||
mov casinoSprites[19*SIZEOF SpriteObject].promptPtr, OFFSET promptRussianRoulette
|
||||
|
||||
; Sprite 20: Online Russian Roulette (Backroom Secret Terminal)
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].posX, (18 * FP_1)
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].posY, (25 * FP_1)
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].baseTexId, 34
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].interactId, INTERACT_ONLINE_RR
|
||||
mov casinoSprites[20*SIZEOF SpriteObject].promptPtr, OFFSET promptOnlineRR
|
||||
|
||||
; Sprite 21: Hell Tower Portal (South Wing Deep End)
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF)
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].posY, (29 * FP_1)
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].baseTexId, 4
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].frameCount, 1
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].curFrame, 0
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].animTimer, 0
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].animSpeed, 1
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].interactId, INTERACT_HELL_TOWER
|
||||
mov casinoSprites[21*SIZEOF SpriteObject].promptPtr, OFFSET promptHellTower
|
||||
|
||||
mov eax, 1
|
||||
jmp init_return
|
||||
|
|
|
|||
47
poker.asm
47
poker.asm
|
|
@ -72,6 +72,13 @@ GetConsoleScreenBufferInfo PROTO :DWORD, :DWORD
|
|||
GetConsoleMode PROTO :DWORD, :DWORD
|
||||
SetConsoleMode PROTO :DWORD, :DWORD
|
||||
FillConsoleOutputCharacterA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
|
||||
AllocConsole PROTO
|
||||
FreeConsole PROTO
|
||||
GetConsoleWindow PROTO
|
||||
SetConsoleTitleA PROTO :DWORD
|
||||
GetWindowRect PROTO :DWORD, :DWORD
|
||||
SetWindowPos PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
|
||||
SetFocus PROTO :DWORD
|
||||
mciSendStringA PROTO :DWORD, :DWORD, :DWORD, :DWORD
|
||||
waveOutSetVolume PROTO :DWORD, :DWORD
|
||||
AnimFrameDelay PROTO :DWORD
|
||||
|
|
@ -14925,6 +14932,46 @@ uma_exit:
|
|||
ret
|
||||
GameUmamusume ENDP
|
||||
|
||||
; --- GamePlayerTerminal: Èãðîâîé òåðìèíàë (ñòàòèñòèêà, à÷èâêè, êâåñòû) ---
|
||||
titleTerminal db "=== ÒÅÐÌÈÍÀË ÈÃÐÎÊÀ ===",13,10,0
|
||||
textTerminalMenu db "1. Äîñòèæåíèÿ",13,10,"2. Ñòàòèñòèêà ïî èãðàì",13,10,"3. Åæåäíåâíûå çàäàíèÿ",13,10,"4. Ãëàâíîå ìåíþ è ÷èòû",13,10,"0. Íàçàä â êàçèíî",13,10,0
|
||||
|
||||
GamePlayerTerminal PROC
|
||||
terminal_loop:
|
||||
call ClearView
|
||||
invoke PrintTitleColor, OFFSET titleTerminal
|
||||
invoke PrintStr, OFFSET textTerminalMenu
|
||||
invoke PrintStr, OFFSET choiceText
|
||||
call ReadKey
|
||||
cmp al, '1'
|
||||
je term_ach
|
||||
cmp al, '2'
|
||||
je term_stats
|
||||
cmp al, '3'
|
||||
je term_daily
|
||||
cmp al, '4'
|
||||
je term_classic_menu
|
||||
cmp al, '0'
|
||||
je term_exit
|
||||
cmp al, 1Bh
|
||||
je term_exit
|
||||
jmp terminal_loop
|
||||
term_ach:
|
||||
call GameAchievements
|
||||
jmp terminal_loop
|
||||
term_stats:
|
||||
call GameStatsByGame
|
||||
jmp terminal_loop
|
||||
term_daily:
|
||||
call GameDailyTasks
|
||||
jmp terminal_loop
|
||||
term_classic_menu:
|
||||
call MainMenu
|
||||
jmp terminal_loop
|
||||
term_exit:
|
||||
ret
|
||||
GamePlayerTerminal ENDP
|
||||
|
||||
include casino3d.inc
|
||||
|
||||
|
||||
|
|
|
|||
BIN
poker.exe
BIN
poker.exe
Binary file not shown.
Loading…
Add table
Reference in a new issue