チート初心者スレpart3 (679レス)
1-

433: 2023/01/21(土) 00:14:33.54 ID:??? AAS
>>432
>>431の画像の情報しか見えなかったので違いますかね
htmlの最初の方っていうのは一個目の画像のことですか?
自分の中のイメージとしては下のコンソールに何かのコマンドを入れて一瞬で経験値999とかにしたいと思ってるんですけど何を入れればいいか分からないんですよね
画像リンク

画像リンク

434: 2023/02/08(水) 15:04:59.50 ID:??? AAS
hiddenの部分はvisibilityに"hidden"という文字列を代入するって意味で何かが暗号化されてたりするわけじゃない
だけどそもそもソースコードをすべて読み込むのは最終手段
たとえばクッキーの枚数を増やしたいならこれでじゅうぶん
・クッキーを右クリックして検証
・右側のイベントリスナータブを選択
・clickツリーを展開してbutton#bigCookieのmain.js?=v…をクリック
・表示されたコードで怪しい場所を見つける↓
Game.Earn(amount);
Game.handmadeCookies+=amount;
・amountの部分を好きな数値に書き換えてコンソールで実行
ガンバレ〜
435
(1): 2023/03/08(水) 19:26:30.95 ID:??? AAS
チートエンジンのスクリプトで
スクリプトをONにすると特定のアドレスの値を1
offにすると0
ってスクリプトを考えてるんですけど
こういうのでもハックするゲームに存在する命令を改ざんする形じゃないと
設定できないのでしょうか
436
(3): 2023/03/08(水) 19:40:56.08 ID:??? AAS
[enable]
アドレスorシンボル:
db 1
[disable]
アドレスorシンボル:
db 0
437
(1): 2023/03/08(水) 20:18:37.50 ID:??? AAS
>>436
いやコーディングができないとかの問題じゃなくて
ハックするゲームの命令と関係なしのスクリプトは作れないかって問題です
438: 2023/03/08(水) 21:01:51.77 ID:??? AAS
>>437
???
on,off時に特定のアドレスの値を書き換えるだけなら>>436の書式でいけるでしょ
439: 2023/03/08(水) 21:15:01.39 ID:??? AAS
>>435
できるよ^^v
440
(2): 2023/03/08(水) 21:54:10.37 ID:??? AAS
書き換えたいアドレスが1256da2bでauto assembleで

[ENABLE]
[1256da2b]:
db 1
[DISABLE]
[1256da2b]:
db 0

と描き込んでexcecuteを押すとnot all instructions could be injected.と出てしまいます。
何が問題でしょうかアセンブリ言語の文法間違ってるとかでしょうか
441: 2023/03/08(水) 22:24:30.97 ID:??? AAS
>>440
>>436
442
(1): 2023/03/08(水) 22:32:34.79 ID:??? AAS
ブラケットいらんねん
443: 2023/03/08(水) 22:43:12.99 ID:??? AAS
>>442
ありがとうございます
これでコード自体はうまくいきました
activeのところをクリックして値が変わるのも確認しました
ただゲーム内に値変化の影響が反映されません。
値のバイト数とかの問題でしょうか?
444: 2023/03/08(水) 22:45:42.44 ID:??? AAS
ごめんなさいメモリの番号間違ってました
直したらうまくいきました。
すごい初歩的な問題だと思いますが質問に応答していただきありがとうございました。
445: 2023/03/10(金) 22:31:05.84 ID:??? AAS
重ねて恐縮ですが質問あります。
動的アドレスの関係で固定アドレスではなくポインタの場合の書式はどうなるか
教えてもらってもよいでしょうか
というかアセンブリ言語でポインタ指定って可能なんでしょうか
446: 2023/03/12(日) 17:58:37.84 ID:??? AAS
ブランケットとオフセット使え
447: 2023/03/17(金) 02:57:13.93 ID:??? AAS
とりあえずやってみます
448
(1): 2023/03/17(金) 10:28:03.63 ID:??? AAS
なんか無理そうやな
>>440のアドレスがポインターの場合ってことでいいんよね
アドレスが0x00100000でオフセットが0x10、0x08、0x14だったとすると
[[[00100000]+10]+08]+14
って感じでいけるハズやで
449: 2023/03/19(日) 14:47:34.21 ID:??? AAS
>>448
質問しておきながら直近多忙によりCTに触れていません。ごめんなさい。
画像リンク

画像のようなポインタなら
[[[1257dda0]+b4]+2c]+de
でOKということでしょうか?
450
(1): 2023/03/19(日) 15:07:20.96 ID:??? AAS
あってる
Add Address Manuallyから画像1番上のAddress:の部分に
[[[game.exe+00FD2420]+b4]+2c]+de
と入力すると同じ結果が得られるはず
451: 2023/03/26(日) 17:36:31.67 ID:??? AAS
>>450
遅レスですがうまくいきました
これでスクリプトのコードにいちいち動的コード全通り書かなくてもよくなりました
ありがとうございます
452
(1): 2023/03/26(日) 21:05:56.68 ID:??? AAS
画像リンク

メモリを見ていると右側の欄にrightfootとかrightuplegとか明らかに意味のある単語がでてきたんですが
そもそも右側の欄は何なのでしょうかなんのために必要なのでしょうか
どなたかお教えください
453
(1): 2023/03/26(日) 22:11:13.09 ID:??? AAS
>>452
左側の16進数をASCIIコードとして表示できる場合は対応した文字を表示しているだけ
プログラム内部で使用するパラメータや表示する文字列とかが見える
この文字列を参照してるコード調べれば何かわかるかも程度
454
(1): 2023/03/26(日) 23:46:01.18 ID:??? AAS
>>453
わかりました。ありがとうございます。
さらに質問ですがボーンオフセットマトリックスという文字列が表示されるメモリ領域でで8つのアドレスを発見したんですが
ボーンオフセットマトリックスの変数って12個だと思うのですが8個の場合もあるんでしょうか
455
(1): 2023/03/29(水) 09:41:24.85 ID:??? AAS
文字列とそれに対応したデータが近いメモリ領域に存在する保証はない
456: 2023/03/29(水) 12:07:23.57 ID:??? AAS
>>455
気を付けます。
また>>454で挙げた8つのアドレスですが浮動小数点表現(どうやらIEEE754とのこと)で2つの変数なのがわかりました。
それで、その変数を弄りたいのですが
浮動小数点表現の変数を変換する際スクリプトはどのように書けばいいか分かる方いらっしゃいませんか?
なお対象となる変数は
0は00 00 00 00
1は00 00 80 3f
と数字の順序が逆に書かれています。
457
(1): 2023/03/29(水) 12:18:30.28 ID:??? AAS
float型で扱えばいいんじゃね
458: 2023/03/29(水) 13:40:21.20 ID:??? AAS
>>457
アドレスの指定は一番左側に表示されてる数字でいいんでしょうか
1なら
00 00 80 3f

この”00”をアドレスで指定する感じでOKですか?
459
(1): 2023/03/29(水) 14:37:09.93 ID:??? AAS
自分で試してみればいいんじゃね
失敗した時に教えた人のせいにできないとダメなん?
460: 2023/03/29(水) 15:04:25.11 ID:C/YS2r3C(1)調 AAS
>>420

俺の記事でも読んでくれたのかな?
暗号化する関数に生データ渡される時に別のデータとすり替えると楽に任意のパケット送信できる
461: 2023/03/29(水) 21:19:48.67 ID:??? AAS
>>459
できました。
ありがとうございました。
462: 2023/03/29(水) 21:21:54.25 ID:??? AAS
ボーンを(正確にはボーンオフセット行列を)いじるスクリプトを考えているのですが
人間による入力は角度(°)で、メモリの修正はサインorコサインの値で、などといった形はできますか?
できるのであればどうすればよいでしょうか
463
(1): 2023/03/30(木) 08:43:00.03 ID:??? AAS
luaでスクリプト書けば?
464: 2023/03/30(木) 10:49:46.89 ID:??? AAS
>>463
luaでGUIを作る感じですかね
465
(1): 2023/03/30(木) 14:53:04.98 ID:??? AAS
まずは表示する値と実際に入れる値の組でプルダウンメニュー作って選択された項目を設定するとかやってみれば?
角度決めうちならLua書かなくてもいけるかも
慣れてきたら機能追加すればいいと思う
466: 2023/03/30(木) 20:44:05.66 ID:??? AAS
>>465
チートエンジンのフォームの話ですよね?
とりあえずフォーム作成でかなり挫けてます。
というのもフォーム作成について解説してくれてるサイトがあんまりなくて。
ここ参考にすればいいとか何かあれば教えてください。
467: 2023/04/03(月) 21:24:57.83 ID:??? AAS
とりあえずチートエンジンwikiにあったチュートリアルをしたことで
おぼつかないもののフォームを作成することができ、残りはコーディング部分になりました。
ただ
ハックしたいゲームのメモリのアドレスの値を読み取る方法と、指定したアドレスに値を書きこむ方法
がそもそもわからずコーディングできません。
どうすればそれらができるようになるでしょうか
468
(2): 2023/04/03(月) 22:12:34.90 ID:??? AAS
celuaに書いてあるよ
469: 2023/04/03(月) 22:21:27.07 ID:??? AAS
ハックしたいゲームのメモリのアドレスの値を読み取る方法と、指定したアドレスに値を書き込む方法については、チートエンジンwikiに詳しい説明があります。

メモリのアドレスの値を読み取る方法は、チートエンジンのメインページにある「Cheat Engine: Value Types」や「Pointers」などのセクションを参照してください。

指定したアドレスに値を書き込む方法は、チートエンジンのメインページにある「Auto Assembler」や「Code injection」などのセクションを参照してください。

また、チートエンジンを使用する方法については、wikiHowにも分かりやすい記事がありますので、参考にしてみてください。
470: 2023/04/03(月) 23:27:16.19 ID:??? AAS
>>468
txtファイルに書かれている関数を使って
writeFloat([game.exe+01016E44]+600,0)
を最後の行に付け加えて構文チェックをすると
..."]:1052: unexpected symbol near '['
とでます。
ぐぐってみると「lua言語で変数名に使用してはいけない記号を使用した際に発生します。」
とあるのですがこれはどういうことなんでしょうか[]を使えないってのはおかしいとは思うのですが
予めgame.exeが何なのかとかコードを書く必要があるんでしょうか
471
(1): 2023/04/03(月) 23:52:27.03 ID:??? AAS
lua言語では、writeFloatという関数は標準ではありません。 おそらく、あなたが使っているゲームやライブラリが提供しているものだと思います。その場合、その関数の正しい使い方を確認する必要があります。

一般的には、[]を使ってインデックスを指定する場合、その前にはテーブル名が必要です。例えば、t[1]という書き方はテーブルtの1番目の要素を表します。しかし、[game.exe+01016E44]+600という書き方はテーブル名がありません。もしかしたら、これはメモリアドレスを指定しているのかもしれませんが、luaでは直接メモリアドレスにアクセスすることはできません。

もし、writeFloat関数がメモリアドレスに対応しているとしても、[]ではなく()を使って引数を渡す必要があります。例えば、writeFloat((game.exe+01016E44)+600,0)というようにです。
472
(1): 2023/04/04(火) 00:31:56.91 ID:??? AAS
ダブルクォートかシングルクォートでアドレスの部分をくくってみては?
writeFloat("[game.exe+01016E44]+600",0)
473
(2): 2023/04/04(火) 00:48:02.73 ID:??? AAS
>>471
[]を()に変更した所構文エラーはなくなりました(txtファイルの説明からもおそらくメモリアドレスに対応していると思われます)
それでスクリプトを実行した所
Error:[string "
..."]:4: attempt to index a nil value (global 'game')
とでました。ぐぐった所スコープ?が悪いとでました。
おそらくgame.exeがグローバル変数と解釈された?と思われます。
writefload関数の使い方がおかしいのかと思い確認しましたが
writeFloat(v: single): float をパイプに書き込みます。 送信されたバイト数を返し、失敗した場合は nil を返します

writeFloat(address,value) : 指定されたアドレスに単精度浮動小数点を書き込みます。 成功時に true を返します

writeFloatLocal(address,value) : CE のメモリ内の指定されたアドレスに単精度浮動小数点を書き込みます。 成功時に true を返します
>>468 さん が言ってたcaluaに載ってる内容なのでチートエンジン的にはすでに実装されている関数であり
説明から見るにwritefloat(,)関数なのは間違いなく、使い方が
474: 2023/04/04(火) 00:49:21.47 ID:??? AAS
途中で切れてしましました
説明から見るにwritefloat(,)関数なのは間違いなく、使い方が問題だったのではと思っています。
どう修正すればいいでしょうか
475: 2023/04/04(火) 02:09:53.12 ID:??? AAS
function UDF1_1_CEToggleBox1Click(sender)
print(tostring(writefloat))
writeFloat("[game.exe+01016E44]+600",-0.5)
end
で 
>>473 さんの言う通りにしてみた所
うまくいきました!(なんで上手くいったかは全然わかりませんが)
ありがとうございます
476: 2023/04/04(火) 02:24:11.24 ID:??? AAS
失礼しました
>>472 さんの間違いです

function UDF1_1_CEToggleBox1Click(sender)
print(tostring(writefloat))
writeFloat("[game.exe+01016E44]+600",-0.5)
end
で 
>>473 さんの言う通りにしてみた所
うまくいきました!(なんで上手くいったかは全然わかりませんが)
ありがとうございます
477: 2023/04/04(火) 08:44:12.13 ID:??? AAS
luaのパーサーは標準のやつでブラケット使うアドレス表現は解釈できないってこと?
一旦、文字列引数として受け取って、CEのアドレス表現として評価してるのかな?
478: 2023/04/05(水) 03:28:28.55 ID:??? AAS
luaはC#の方言って感じだからC#の文法にないことは出来ない
そういうこと
479
(1): 2023/04/05(水) 21:38:23.51 ID:??? AAS
フォームでeditに書かれてる値を読み込むコードを書きたいんですけど
どんな関数使えばいいですか?
480: 2023/04/06(木) 23:39:35.67 ID:??? AAS
人に頼らず自分で調べてみれば?
外部リンク:cheatengine.org
481: 2023/04/07(金) 17:41:33.21 ID:??? AAS
正直lua使っていくならいちいちここで質問せずにサイトやら書籍使って勉強したほうがいいよ
lua自体はそんな難しいプログラミング言語じゃないし
482: 2023/04/07(金) 18:17:32.27 ID:??? AAS
luaと言うかCEでの作法を覚えるしかないと思うぞ
GUI部品とか親フォームからたどっていったり、ID指定で取ってくるとか複数のやりかたがあったはず
フォーラムのコードとか見れば大体解決する
483: 2023/04/07(金) 18:41:19.27 ID:??? AAS
>>479
function UDF1_1_CEToggleBox4Click(sender)
print(tostring(writefloat))
print(tostring(readfloat))
writeFloat("[game.exe+01016E44]+5d0",math.cos(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5f8",math.cos(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5d8",math.sin(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5f0",-math.sin(math.rad(UDF1_1.CEEdit1.text)))
writeFloat("[game.exe+01016E44]+5d8",readFloat("[game.exe+01016E44]+5d8")*UDF1_1.CEEdit2.text)
writeFloat("[game.exe+01016E44]+5f8",readFloat("[game.exe+01016E44]+5f8")*UDF1_1.CEEdit2.text)
end
大体こんな感じで
・editに書かれてる値をアドレスに書きこむ
・editに書かれている値の数をかける
はできるようになりました。
ご協力ありがとうございます。
484: 2023/04/07(金) 18:44:14.18 ID:??? AAS
行列演算したいんですけど
場合によっては作成したCTファイルを配布する前提(なお作っているCTファイルはオンラインで迷惑行為をするようなものではありません)なので
torchみたいな外部ライブラリをDLせずに演算できるようにしたいです。
どうすれば良いでしょうか。
485
(1): 2023/04/07(金) 19:40:51.64 ID:??? AAS
こども電話相談室みたいになってきたなw
外部ライブラリはライセンスに従って自分のEXEと一緒に再配布しちゃえばいいんじゃね?
EXEにしても中ではluaのインタプリタで動くので演算速度のメリットはなく、高速な外部ライブラリキックしたほうが断然速い
486: 2023/04/07(金) 23:57:26.65 ID:??? AAS
>>485
torchというライブラリの導入方法がわからいのもあり
とりあえず自分で行列計算のメソッドを書いてみたんですが
これであってますか?

matrix = {}
for i = 1, 3 do
matrix[i] = {}
for j = 1, 3 do
matrix[i][j] = 0
end
end

function matrix_mul(A,B)
local C ={}
for i =1,3
for j = 1,3
C[i][j]=A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3][j]
end
end
487: 2023/04/08(土) 14:00:03.12 ID:??? AAS
結局
function matrix_mul(A,B)
local C ={{0, 0, 0},{0, 0, 0},{0, 0, 0}}
for i =1,3 do
for j = 1,3 do
C[i][j]=A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3][j]
end
end
return C
end
で行列の計算ができるようになりました
いちいち型指定するのにゼロをいれないといけないのが不便
488: 2023/04/08(土) 23:22:01.03 ID:??? AAS
大体コード部分はできたんですけど
作っているフォームのパネルやエディット、ボタンなどを
コピーアンドペーストして複数設置するようにするにはどうしたらよいでしょうか
489
(1): 2023/04/08(土) 23:42:35.29 ID:??? AAS
ショートカットキーでいけんじゃね?
490
(1): 2023/04/08(土) 23:50:10.09 ID:??? AAS
画像リンク

こんな感じですね
>>489
右クリックでこんな感じになります
画像リンク

ctrl+c→ctrl+pでいけると私も思ったんですけど
うまくいかなかったです
491
(1): 2023/04/09(日) 00:00:19.88 ID:??? AAS
object inspector見ればコピペした後に部品増えてんだろ?
同じ位置に出て気付かないだけで
492: 2023/04/09(日) 00:02:30.50 ID:??? AAS
>>491
ツリー上の所を見ても増えてないです。
チュートリアルにもctrl+c ctrl+pで複製しろみたいな事書かれているので
できるはずなんですけど…
493: 2023/04/09(日) 16:31:21.61 ID:??? AAS
ショートカット使えないならあきらめ
フォームをファイルに書き出して編集、必要な部品コピペして部品IDユニークになるように書き換え、再読み込みとか泥臭いやつでもやってみれば
494: 2023/04/09(日) 19:11:01.80 ID:??? AAS
>>490
気になるから何のゲームか教えてくれませんか
495: 2023/04/15(土) 22:56:42.10 ID:??? AAS
チートエンジンでスクリプトをオンにするとフォームが起動して
オフにするとフォームが消えるようにするにはどうすればいいですか?
496: 2023/04/16(日) 00:46:24.64 ID:??? AAS
m_default_right_breast_tip={{0, 0, 0},{0, 0, 0},{0, 0, 0}}
v_default_right_breast_tip={0, 0, 0}
set_this_matrix_as_default(offset_right_breast_tip,m_default_right_breast_tip,v_default_right_breast_tip,…略

function return_to_the_default(offset,
m_default,
v_default,
text1,text2,text3,text4,text5,
text6,text7,text8,text9,text10,
text11,text12,text13,text14,text15)
print(tostring(writefloat))
writeFloat("[game.exe+01016E44]+offset+0",m_default[1][1])
writeFloat("[game.exe+01016E44]+offset+4",m_default[1][2])
writeFloat("[game.exe+01016E44]+offset+8",m_default[1][3])
writeFloat("[game.exe+01016E44]+offset+10",m_default[2][1])
writeFloat("[game.exe+01016E44]+offset+14",m_default[2][2])
writeFloat("[game.exe+01016E44]+offset+18",m_default[2][3])
writeFloat("[game.exe+01016E44]+offset+20",m_default[3][1])
writeFloat("[game.exe+01016E44]+offset+24",m_default[3][2])
writeFloat("[game.exe+01016E44]+offset+28",m_default[3][3])
writeFloat("[game.exe+01016E44]+offset+30",v_default[1])
writeFloat("[game.exe+01016E44]+offset+34",v_default[2])
writeFloat("[game.exe+01016E44]+offset+38",v_default[3])
・・・・(省略)
end

みたいな形でコードを書くと attempt to index a nil value (local 'm_default')
と出るんですがfunctionの変数に行列を入れた場合行列の成分を使うのできないってことですか?
497: 2023/04/16(日) 00:49:53.33 ID:??? AAS
まとめ方が下手だな・・・
matrix_a={{0, 0, 0},{0, 0, 0},{0, 0, 0}}

function X(matrix)
print(matrix_a[1][1])
end
の時
X(matrix_a)
を実行できますか?
ということです
498: 2023/04/16(日) 00:50:08.34 ID:??? AAS
1. チートエンジンのメインウインドウから、「Table->Show Cheat Engine Lua Script」をクリックしてください
2. スクリプトウインドウで、フォームを作成するコードを記述します
```
-- フォームの変数を作成
local form = createForm(false) -- falseはフォームが自動的に表示されないことを意味する

-- フォームのタイトルやサイズなどを設定
form.Caption = "My Form"
form.Width = 300
form.Height = 200

-- フォームにボタンやラベルなどのコントロールを追加
local button = createButton(form)
button.Caption = "Click Me"
button.Left = 100
button.Top = 50
local label = createLabel(form)
label.Caption = "Hello World"
label.Left = 100
label.Top = 100
```
499
(1): 2023/04/16(日) 00:55:09.16 ID:??? AAS
3. スクリプトウインドウで、スクリプトを有効化したときにフォームを表示し、無効化したときにフォームを非表示にするコードを記述します
コード書いたらNGワードになるから頑張って書いて
4. スクリプトウインドウで、「Execute Script」ボタンを押してスクリプトを実行します
5. チートテーブルのスクリプトエントリーのチェックボックスをオンにすると、フォームが起動し、オフにするとフォームが消えるはずです
500: 2023/04/16(日) 01:04:13.46 ID:??? AAS
画像にすれば良いのか
画像リンク

501
(1): 2023/04/16(日) 01:25:23.29 ID:??? AAS
>>499
スクリプトに

[enabe]
(フォーム名).show()
[disable]
(フォーム名).hide()

じゃだめってことですか?
502
(1): 2023/04/16(日) 01:29:04.94 ID:??? AAS
>>501
それでもできると思います
ただし、フォームのインスタンスを作成する必要があります例えば、以下のようなコードです

local form -- フォームの変数
[ENABLE]
form = createForm(false) -- フォームのインスタンスを作成
form.loadFromTable(cheatForm) -- チートテーブルに保存したフォームを読み込む
form.show() -- フォームを表示する
[DISABLE]
form.hide() -- フォームを隠す
503: 2023/04/16(日) 01:37:18.73 ID:??? AAS
>>502
すいません一行目のlocal formがよくわかんないです
画像リンク

504: 2023/04/16(日) 01:59:14.23 ID:??? AAS
local form = createForm(false)
で変数の型を指定してみて
505: 2023/04/16(日) 02:18:11.09 ID:??? AAS
local form = createForm(false)
がコンパイルできないって出ました…
というかluaって変数の型指定って具体的な代入以外でできましたっけ?
506
(1): 2023/04/16(日) 02:47:59.32 ID:??? AAS
luaは変数の型指定は必要ありませんが、変数のスコープを指定するためにlocalを使います
Luaでは変数の型は動的に割り当てられるため、必要に応じて異なる型の値を割り当てることができ
もしかしたら、createForm関数が定義されていない可能性があります
507: 2023/04/16(日) 09:58:24.46 ID:??? AAS
>>506
私が使用しているcheatengineはヴァージョン7.5で
以前ここでcelua.txtに使える関数が載ってると言われたので
確認しましたが
createForm(visible OPT): creates a CEForm class object(window) and returns the pointer for it. Visible is default true but can be changed
とあったの定義されてるはず…なんですけどどういうことなんでしょうか…
pythonとかだと〇〇のライブラリ呼び出しますみたいな一文書きますけど
luaにも必要なんでしょうか
508
(1): 2023/04/16(日) 10:12:56.19 ID:??? AAS
{$lua}付けてないだけとか?
509
(1): 2023/04/16(日) 10:52:11.48 ID:??? AAS
こんなんで動くんじゃね?
{$lua}
local form = nil
{$asm}
[ENABLE]
{$lua}
if form == nil then
form = createForm(True)
end
form.show()

[DISABLE]
{$lua}
if form ~= nil then
form.hide()
end
510: 2023/04/16(日) 10:57:56.21 ID:??? AAS
フォームを✕ボタンで閉じちゃったりすると動かなくなるので、formがnilじゃなくても表示されてるか閉じられたformなのか判定する必要がありそう
フォーム閉じるタイミングのコールバックがあれば何かするとか
511
(1): 2023/04/16(日) 12:21:04.96 ID:??? AAS
>>509
form.loadFromTable(cheatForm)
挟んでないのに行けるの?…と思いながらも
実行したらいけました。
というか

[enable]
{$lua}
(ォーム名)a.show()

[DISABLE]
{$lua}
(フォーム名).hide()

でいけました。
>>508 さんの言う通りでした。

{$lua}つけなくてもフォームのコーディングとか他人配布のCTファイルのスクリプトははいけたのになんで?ってなりました。
とりあえずよくわかんない時は{$lua}つけた方がいいんでしょうか
512
(1): 2023/04/16(日) 12:35:02.01 ID:??? AAS
>>511
そりゃ<LuaScript>の中に書いてりゃLuaってわかるけど、<AssemblerScrip>の中だと{$asm}が前提になってるから{$lua}って明示する必要があっるてだけじゃね?
513: 2023/04/16(日) 12:41:34.55 ID:??? AAS
>>512
あぁなるほど
すごく初歩的な質問ですいませんでした。

チートエンジンウィキのチュートリアルにはまったく書かれてない内容なんだけど
チートエンジンのチュートリアルが不親切すぎるのか、ここが相当親切なのか…
514: 2023/04/16(日) 14:58:00.90 ID:??? AAS
function f1 (text1,text2)
text1=0
text2=1
end

function ……Click(sender)
f1(form.CEEdit1.text1,form.CEEdit1.text2)
end
みたいなコードを書いて該当のフォームをでクリックしてもform.CEEdit1.text、form.CEEdit2.textの値が変わらないんですけど(しかもエラーはでない)
問題はプログラミング部分でしょうかコーディング部分でしょうか
515
(1): 2023/04/16(日) 15:28:07.96 ID:??? AAS
言語仕様よく知らんが、文字列や数値だと値がコピーされて値渡しになってんじゃね?
Editのようなオブジェクト渡せば参照渡ししてくれんじゃね?
516: 2023/04/16(日) 17:39:02.98 ID:??? AAS
>>515
それだ!と思ったのですが調べた見たところオブジェクトは参照渡ししかできないようなので
違うと思います。

オブジェクト
以下の型は オブジェクト である
テーブル
Luaのテーブルは動的に確保された オブジェクト
関数
スレッド
ユーザーデータ
オブジェクトは変数の格納されず、参照されるのみである
代入、引数渡し、関数の返り値は、コピーではなく参照が渡される
テーブルついて
517
(1): 2023/04/16(日) 18:01:38.89 ID:??? AAS
Cheat Engine Forumで聞いてみ
Google翻訳でなんとかなるで
518: 2023/04/16(日) 18:35:43.14 ID:??? AAS
form.CEEdit16.text=10000
→フォームの数字が1万になる

function f1(text1)
text1=10000
end
f1(form.CEEdit16.text)
→フォームの数字が変わらない

実験して上記の通りになったんで
本来オブジェクトは参照渡しのはずなのに参照渡しされないっぽいです。
>>517
そっちにも聞いてみます。
519
(1): 2023/04/16(日) 18:45:51.94 ID:??? AAS
すごい初歩的で致命的なバグが放置されていたんだね
ヒーローになれるかもしれませんね
520: 2023/04/16(日) 19:11:40.67 ID:??? AAS
>>519
どうも書き換えるだけでなく読み込む方でも関数の引数にeditオブジェクト使えないっぽいんで
やっぱeditオブジェクトのバグなのかなぁと思ったりもします。
521: 2023/04/16(日) 19:15:53.16 ID:??? AAS
はーチュートリアルに実装されてない機能使えとかあったり
フォームはコピペすらできないし
コードに{$lua}って書いてなかったり(チュートリアルに書かれてあるコードだとコンパイルすらできない)
editオブジェクトは引数に使えなかったり
ゴミすぎんだろCE……
522: 2023/04/16(日) 22:12:35.88 ID:??? AAS
forumで効いたら
unction f1(text1)
text1.text=10000
end
f1(form.CEEdit16)
とのことでした。
型指定とかゆるゆるなのにこういうところは厳しいのか…
523
(1): 2023/04/16(日) 22:19:50.99 ID:??? AAS
writeFloat("[game.exe+01016E44]+660",v_default[1]+text1.text/1000)
でうまくいくのですが、後の改変に備えてモジュール化したいので
offset=0x630
writeFloat("[game.exe+01016E44]+offset+30",v_default[1]+text1.text/1000)
としたらうまくいきません。
どうすればよいでしょうか?
524
(1): 2023/04/16(日) 23:15:43.65 ID:??? AAS
オフセットの値ちがくね
525: 2023/04/16(日) 23:55:17.64 ID:??? AAS
>>524
630+30で660では?
readFloat("[game.exe+01016E44]+5d0")では狙い通りのアドレスの値を読み込んでいるため
writeFloat("[game.exe+01016E44]+660",v_default[1]+text1.text/1000)
の+660の部分は+0x660であり+630+30に変えても問題ないため
>>523
と判断しました。
んで結局うまく行ってないです。
526
(1): 2023/04/17(月) 00:14:00.51 ID:??? AAS
10進数と16進数で違うが合ってると判断してるのなら原因わからんわ
すまんな
527
(1): 2023/04/17(月) 00:51:42.16 ID:??? AAS
>>526
いえ、相談にのって頂きありがとうございました。

改めて検証した所こうなりました。
writeFloat("[game.exe+01016E44]+660",v_default[1]+text1.text/1000)
→うまくいく
writeFloat("[game.exe+01016E44]+0x630+0x30",v_default[1]+text1.text/1000)
→うまくいく
offset_1=0x630
writeFloat("[game.exe+01016E44]+offset_1+0x30",v_default[1]+text1.text/1000)
→うまくいく

function f2(offset)
writeFloat("[game.exe+01016E44]+offset+0x30",v_default[1]+text1.text/1000)
end
offset_1=0x630
f2(offset_1)
→うまくいかない(errorはでない)

うまくいかない理由が分かる方いらっしゃいませんか?
528: 2023/04/17(月) 01:34:48.57 ID:VG702j39(1)調 AAS
こういうことはやめようね
外部リンク[php]:forum.cheatengine.org

外部リンク[php]:forum.cheatengine.org
529: 2023/04/17(月) 04:12:40.37 ID:??? AAS
開発者に向かってstupidは草
文句だけじゃなくて改善案くらい一緒に書いとけよw
自分で暗に文字列はオブジェクトじゃないとか言っておきながら参照渡しにならないって文句いってるのも草だよな
530: 2023/04/17(月) 05:50:22.94 ID:??? AAS
ipアドレスばれてるだろうから、日本人アホだと思われてるぞ
531: 2023/04/18(火) 20:41:40.83 ID:??? AAS
>>527
さらに検証して
function f2(offset)
local o1=offset
writeFloat("[game.exe+01016E44]+o1+0x30",v_default[1]+text1.text/1000)
end
offset_1=0x630
f2(offset_1)
→うまくいく

でうまくいきました。マジでなんで。
本当に意味不明ですがとりあえず目的は達成しました。
532
(1): 2023/04/18(火) 22:38:53.42 ID:yRvVNGuH(1)調 AAS
function f1(offset,vector)
local o1 =offset
vector[1]=readFloat("[game.exe+01016E44]+o1+30")
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
→うまくいかない

ためしに下記をしてみると
function f2(offset,vector)
local o1 =offset
vector[1]=readFloat("[game.exe+01016E44]+o1+30")
print(vector[1])
print(vector1[1])
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vector1)

0.086963586509228
0
で(本来参照渡しであるはずなのに)値渡し状態になってることがわかったんですけど
これどうすればいいでしょうか。
533: 2023/04/19(水) 04:34:38.04 ID:??? AAS
コンパイル必要な言語だとf2の中に出てくるvector1って未定義なんでエラーになるんじゃね?
luaが未定義だからよろしくやってくれて0にしてるとかじゃね?
その書き方だったらf2の前にvector1宣言しとくべきじゃね?
値渡しになってっるってのであれば、f2でreturnして、その値を受け取りゃいいだけじゃね?
534
(1): 2023/04/19(水) 08:05:01.52 ID:??? AAS
readFloatとwriteFloatは内部で文字列を解釈してる
そもそもluaの変数名を入れて動いてる事自体が奇跡
たぶんローカル変数しか解釈できないんじゃないの
local address = string.format("[game.exe+0x01016E44]+0x%X+0x30", offset)
local result = readFloat(address)
こうすれば絶対動く
535: 2023/04/19(水) 09:14:42.42 ID:??? AAS
覚えたてのcall by referenceって言いたいだけとか?
call by valueだったとすると型がわからないから何をどこまでコピーすればいいかのコストが高そうな気がする
536: 2023/04/19(水) 19:36:16.14 ID:??? AAS
>>534
cheatengineformで >>534 さんの言う通りだと教えてもらいました。
>>534 さんのコードの方が私のより可読性が高いものの行数が増えるなぁどうしようと思っていた所、
function f2(offset)
writeFloat(readPointer"game.exe+01016E44"+offset+0x30,v_default[1]+text1.text/1000)
end
というコードを教えてもらいました。一番シンプルでわかりやすいのでこれでいこうと思います。
537: 2023/04/19(水) 20:39:20.76 ID:??? AAS
こんな適当なことしか言わない所で聞かずに本家に行ったほうがいいんじゃね?
538: 2023/04/19(水) 21:01:02.50 ID:??? AAS
>>532
この件ですが
function f1(offset,vector)
vector={0, 0, 0}
vector[1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
→うまくいかない
ってのが正しくて試しに
function f3(offset,vector)
vector[1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
→うまくいく
となりました。

関数内で引数の型指定のためにゼロベクトルを代入していたのを辞めた結果うまくいくようになったのですが、
これはどういうことなんでしょうか。ゼロベクトルを代入した結果、vectorとvector1の関係が切れたと見て
いいんでしょうか
539
(1): 2023/04/19(水) 23:25:41.98 ID:??? AAS
別オブジェクトの参照で上書きしちゃったんで元オブジェクトが書き変わらないのは当然じゃね?
540: 2023/04/20(木) 19:59:46.88 ID:??? AAS
>>539
ということは
function f1(offset,vector)
vector[1]=0
vector[2]=0
vector[3]=0
vector[1]=readFloat(readPointer("game.exe+01016E44")+offset+0x30)
end
vector1={0, 0, 0}
offset1=0x630
f1(offset1,vctor1)
だとうまくいくということでしょうか。
さらに言えばvector={0, 0, 0}は単純に値を書き換えるという意味ではない何かで
vector[1]=0は単純に値を書き換えるという意味でしょうか
python辺りだと一括代入できて楽なんだけどめんどくさい感ある
541: 2023/04/20(木) 20:58:24.85 ID:??? AAS
Python知らんけどLuaでも{0, 0, 0}で初期化された新しいオブジェクト(インスタンス)作ってんじゃねーの?
一括代入っつーなら長さ10くらいの配列に{0, 0, 0}代入して配列の長さ確認してみりゃいいだけじゃね?
542
(1): 2023/04/21(金) 04:48:17.91 ID:??? AAS
CEだとオブジェクトのアドレス表示できない?
アドレス比較はできるのでどんな結果になるか確認してみれば?
a={0, 0, 0}
b=a
if a == b then print("1") end
b[1]=1
if a == b then print("2") end
b={0, 0, 0}
if a == b then print("3") end
543: 2023/04/21(金) 20:41:04.87 ID:??? AAS
>>542 さんのを実行すると
1
2
とでました。また
a=0
b=a
if a == b then print("1") end
b=1
if a == b then print("2") end
b=c
if a == b then print("3") end
を実行すると
1
とでました。ということは基本的に代入すると参照関係が切れるけど
配列の成分に値を入れる場合は特別に参照関係が切れないということで
いいんでしょうか。
544
(1): 2023/04/21(金) 22:10:08.66 ID:??? AAS
ただ単に参照って言いたかっただけで実際は何もわかっていなかった人で草
オブジェクトの変数は簡単に言うとデータが入ってるメモリの先頭アドレス
配列の各要素は先頭アドレスからのオフセットでアクセスする(正確には違うけど)
その変数に別データの先頭アドレス入れちゃったらどうなるよ?ってことだよ

あとは、自分で試したのがオブジェクトじゃなくて数値使ってるのも理解できてない証拠
そこはb=cじゃなくてb=0だろ
545: 2023/04/22(土) 17:55:17.42 ID:??? AAS
>>544
>オブジェクトの変数は簡単に言うとデータが入ってるメモリの先頭アドレス
>配列の各要素は先頭アドレスからのオフセットでアクセスする(正確には違うけど)
それとb=1をするとbとaの参照関係切れる切れない関係なくないですか?
配列の構造についての解説自体はありがたいですが…
546
(1): 2023/04/22(土) 20:13:40.89 ID:??? AAS
論点ずらすなよ
オブジェクトの話してんのにb=1とか値の話を持ち込んで混乱させてるのはそっちだろ

a={0,0,0}って内部では下のような処理してる
 a={} ←どこかのメモリを新規に確保、aにアドレス返す、仮にaddr1とする
 a[1]=0 ←writeFloat(addr1+offset+0, 0)
 a[2]=0 ←writeFloat(addr1+offset+4, 0)
 a[3]=0 ←writeFloat(addr1+offset+8, 0)
b=a ←bにもaの参照であるアドレスaddr1が入る
b[1]=1 ←writeFloat(addr1+offset+0, 1)
ここでは参照先のアドレスaddr1の指す先のデータ書き換えてるだけで、bのアドレス変える操作しとらんだろ?
b={0,0,0} ←aと同じように新規にメモリ確保、別メモリなのでaddr1とは違うaddr2がbに入る
ここでbはaの参照ではなく別データの参照に置き換わったってだけ
参照切れたとか言ってるけど参照切ってるのは君が書いたコード

参照って君が思ってるような選ばれた人しか使えないような高度な考えじゃなくて単なるデータが格納されているメモリのアドレスを指してるだけのものだよ?
547: 2023/04/22(土) 23:51:19.07 ID:??? AAS
>>546
じゃあ結局基本基本的に代入すると参照関係が切れるけど
配列の成分に値を入れる場合は特別に参照関係が切れないということですね
あと配列のパターンじゃなくて
b=1などの数値のパターンだとどうなるんですか?
548: 2023/04/23(日) 00:47:44.80 ID:??? AAS
基本的とか特別って何だよ?
配列の要素に値を設定する処理はbが指してるアドレスにあるデータを更新してるだけで、b自身のアドレスは変更してないだろ?
549
(1): 2023/04/23(日) 11:16:35.59 ID:??? AAS
もう数値とか参照関係ないだろ?
値がコピーされるだけで変数の間には何の関係もない
参照になるのはオブジェクトだけって自分で言ってただろ
550
(1): 2023/04/25(火) 14:13:40.06 ID:??? AAS
>>549
じゃあ結局代入すると参照関係が切れるけど
配列の成分に値を入れる場合は参照関係が切れないということですね

b=1の場合でもメモリ確保して1の値がそこで保持されてb自体にはアドレスを返す
であってますか?
551: 2023/04/25(火) 18:12:00.70 ID:??? AAS
lua言語の実装としてはデータの入ったアドレスとして管理してるんだろうよ
処理の中で変数bに数値入れたの知ってるから、変数bが指定されたら数値で返してるってだけ
使う側としては0入れたのにアドレスの数値が入ってたらおかしいだろ?

もう悔しくて屁理屈こねて突っ掛かってるだけにしか見えんよ
ソース読めば仕様もバグも全て書かれてるよ
552
(1): 2023/04/26(水) 16:18:36.91 ID:??? AAS
>>550
実装によるとしか言えない
いちいち4バイトのメモリを確保してアドレスを保持しているかもしれないし
4バイトではなく8バイトかもしれないし
スタックに保持しているかもしれないし
起動時に予め確保しておいたメモリ領域を使っているかもしれないし
高速化のためにメモリを使わずにレジスタだけを使っているかもしれない
わからんけど動けばよくね
553: 2023/04/26(水) 18:58:50.59 ID:??? AAS
lua実装側の変数のメモリ管理とlua利用側の変数の見え方が混乱しているっぽい
あとは参照というキーワードにこだわりを持ってる
554: 2023/04/26(水) 21:49:26.37 ID:??? AAS
イキりくさってて草
555
(2): 2023/04/28(金) 23:43:47.10 ID:??? AAS
>>552
実装によるというのは実行するアプリ(この場合ではcheatengine)という意味ですか?
556: 2023/04/29(土) 08:25:15.56 ID:??? AAS
君は実装とか言い出す前にluaの言語仕様理解しなさい
実装知りたかったらソース読みなさい
557
(2): 2023/04/29(土) 09:19:10.08 ID:??? AAS
>>555
質問を読み直してみたけど変数はすべてアドレスの別名だと思って構わない
aという変数を宣言するとLuaが勝手に0x1000000を割り当ててくれるみたいな
その前提があったうえで、さらにaがテーブルの場合は0x1000000に実データが存在する別のアドレス0x2000000を書き込むということ
0x1000000にすべてのデータを書き込めばいいと思うかもしれない
けど0x1000004にはbという変数が割り当てられてるかもしれないから、そのばあい上書きすることになる
そして上書きを避けるために代入のたびに再割当てをすると処理が重くなってしまう
だから妥協の結果としてテーブルの代入で奇妙な挙動が生まれる
直感どおりの代入がしたいならDeepcopyで調べるといい
たしかPythonも同じ問題を抱えてたはず
558: 2023/04/29(土) 09:35:17.40 ID:??? AAS
質問に答え忘れてたからもうひとつ
>>555
そう
けどテーブル代入の奇妙な振る舞いを理解するためにはそこまで考える必要はない
559: LC Production 2023/04/29(土) 18:53:43.55 ID:Wp8DYy46(1)調 AAS
c++でメモリにアクセスして、
敵の情報を取得し、
そのあとメモリを書き換えて視点を移動させる。
コードは教えれないけどそんな感じでチート作れまっせ
1-
あと 120 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.050s