[{"data":1,"prerenderedAt":51},["ShallowReactive",2],{"site":3,"blog-post-th-fivem-server-security-without-anticheat":15,"blog-slug-site":44,"blog-scripts-th-fivem-server-security-without-anticheat":50},{"site":4,"contact":10,"seo":13,"payment":14},{"name":5,"host":6,"default_locale":7,"locales":8},"X3D Developer","fivem.x3d-developer.com","th",[7,9],"en",{"discord_invite":11,"email":12,"line":12},"https:\u002F\u002Fdiscord.gg\u002FNA5kPVynFv","",{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"post":16,"html":22,"others":23,"productSlugs":43},{"slug":17,"title":18,"description":19,"date":20,"updated":21},"fivem-server-security-without-anticheat","กันโปร FiveM ขั้นพื้นฐานแบบยังไม่มี anticheat — ตั้งค่า server.cfg ปิดช่องปั๊มเงิน กันหนีแบน (เซิฟถึง 2,000 คน)","คู่มือกันโปร FiveM ที่ทำได้ฟรีก่อนซื้อ anticheat: ตั้งค่า server.cfg (sv_entityLockdown, sv_filterRequestControl, ปิด networked sounds\u002Fphone explosions, sv_scriptHookAllowed) บล็อก game event ยัด\u002Fถอดปืนและเตะออกจากรถ เขียนสคริปเศรษฐกิจให้เซิฟเป็นคนคิดเงินกันปั๊มเงิน\u002Fดูป ล็อกก่อนรีสตาร์ท ผูก Discord + Rockstar License กันหนีแบน และเก็บ log ให้พอรับเมือง 2,000 คน","2026-10-03","2026-10-14","\u003Cp>คนเปิดเซิฟใหม่มักถามคำแรกว่า &quot;ต้องซื้อ anticheat ตัวไหน&quot; แต่ความเสียหายส่วนใหญ่ในเมือง FiveM ไม่ได้มาจาก menu โกงที่ anticheat จับ มันมาจากสองเรื่อง: \u003Cstrong>ค่าตั้งเซิฟที่ปล่อยให้ client ทำอะไรก็ได้\u003C\u002Fstrong> และ \u003Cstrong>สคริปที่เชื่อตัวเลขจากเครื่องผู้เล่น\u003C\u002Fstrong> ทั้งสองเรื่องแก้ได้ฟรี วันนี้ ไม่ต้องมี anticheat สักตัว\u003C\u002Fp>\n\u003Cp>บทความนี้คือ 5 ชั้นที่ควรทำก่อนจ่ายเงินซื้ออะไร ใช้ได้ตั้งแต่เซิฟ 32 คนจนถึงเมือง 2,048 คน และขอพูดตรง ๆ ก่อน: \u003Cstrong>ไม่มีเซิฟไหนกันโปรได้ 100%\u003C\u002Fstrong> เป้าหมายจริงคือทำให้การโกง &quot;ทำยาก ได้ผลน้อย และทิ้งหลักฐาน&quot; ที่ 2,000 คน คนโกงแค่ 1% คือ 20 คนออนไลน์พร้อมกัน ถ้าแต่ละคนปั๊มเงินได้ เศรษฐกิจทั้งเมืองพังภายในสัปดาห์\u003C\u002Fp>\n\u003Ch2 id=\"ภาพรวม-5-ชั้น\">ภาพรวม 5 ชั้น\u003C\u002Fh2>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>ชั้น\u003C\u002Fth>\n\u003Cth>กันอะไร\u003C\u002Fth>\n\u003Cth>ใช้อะไร\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>1. โครงสร้างเซิฟ\u003C\u002Ftd>\n\u003Ctd>เสกรถ\u002FNPC\u002Fพร็อพ ยึดรถคนอื่น สแปมเสียงและระเบิด ScriptHook\u003C\u002Ftd>\n\u003Ctd>convar ใน \u003Ccode>server.cfg\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>2. เศรษฐกิจ\u003C\u002Ftd>\n\u003Ctd>ปั๊มเงิน ปั๊มของ ดูปไอเทม\u003C\u002Ftd>\n\u003Ctd>โค้ดฝั่งเซิฟในสคริป\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>3. กันก่อกวนผู้เล่นอื่น\u003C\u002Ftd>\n\u003Ctd>ยัดปืน ถอดปืน เตะออกจากรถ ระเบิดมั่ว\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>block_net_game_event\u003C\u002Fcode>, \u003Ccode>explosionEvent\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>4. ยืนยันตัวตน\u003C\u002Ftd>\n\u003Ctd>หนีแบน สร้างบัญชีใหม่ บัญชีซ้ำ\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>playerConnecting\u003C\u002Fcode> + identifier + token\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>5. log และหลักฐาน\u003C\u002Ftd>\n\u003Ctd>รู้ว่าเกิดอะไร ใครทำ ตัดสินได้\u003C\u002Ftd>\n\u003Ctd>txAdmin, log ลงฐานข้อมูล, screenshot-basic\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>ชั้น 1 และ 3 ใช้เวลาไม่ถึงชั่วโมง ชั้น 2 คือชั้นที่ปิดความเสียหายได้มากที่สุดและไม่มี anticheat ตัวไหนทำแทนได้\u003C\u002Fp>\n\u003Ch2 id=\"ชั้น-1-server-cfg-10-นาที-ปิดช่องที่ใหญ่ที่สุด\">ชั้น 1: server.cfg — 10 นาที ปิดช่องที่ใหญ่ที่สุด\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-cfg\">sv_entityLockdown relaxed\nsv_filterRequestControl 1\n\nsv_enableNetworkedSounds false\nsv_enableNetworkedPhoneExplosions false\n\nsv_scriptHookAllowed false\nsv_endpointPrivacy true\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>sv_entityLockdown\u003C\u002Fcode>\u003C\u002Fstrong> คุมว่า client สร้าง entity เองได้แค่ไหน ค่าเริ่มต้นคือ \u003Ccode>inactive\u003C\u002Fcode> (สร้างอะไรก็ได้) ซึ่งเป็นทางที่ menu โกงใช้เสกรถ NPC และพร็อพ \u003Ccode>relaxed\u003C\u002Fcode> บล็อก entity ที่สคริปฝั่ง client สร้าง แต่ยังให้รถและคนเดินถนนของเกมเกิดปกติ เหมาะกับเมือง RP ส่วนใหญ่ \u003Ccode>strict\u003C\u002Fcode> คือ client สร้างอะไรไม่ได้เลย\n\u003Cul>\n\u003Cli>\u003Cstrong>ข้อแลก\u003C\u002Fstrong>: สคริปที่สร้างรถหรือพร็อพฝั่ง client (โรงรถ งานอาชีพ พร็อพท่าทาง โทรศัพท์ในมือ) จะสร้างไม่ขึ้น ต้องย้ายไปสร้างฝั่งเซิฟ เช่น \u003Ccode>CreateVehicleServerSetter\u003C\u002Fcode> ทดสอบบนเซิฟ dev ที่ลง resource ชุดเดียวกันก่อนเสมอ ถ้ายังย้ายไม่หมด ตั้งเฉพาะบาง routing bucket ด้วย \u003Ccode>SetRoutingBucketEntityLockdownMode\u003C\u002Fcode> ไปก่อน\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>sv_filterRequestControl\u003C\u002Fcode>\u003C\u002Fstrong> กันการ &quot;ขอคุม&quot; entity ที่ผู้เล่นคนอื่นคุมอยู่ ซึ่งเป็นวิธียึดรถคนอื่นหรือลากรถทั้งเมือง โหมด \u003Ccode>1\u003C\u002Fcode> บล็อกการขอคุมรถที่มีคนอยู่และเกิดมานานกว่า 30 วินาที ปลอดภัยที่สุดสำหรับเริ่ม โหมด \u003Ccode>2\u003C\u002Fcode>–\u003Ccode>4\u003C\u002Fcode> กันได้กว้างขึ้น แต่สคริปช่าง ลากรถ หรืออุ้มคนบางตัวที่ต้องคุม entity ของคนอื่นจะพัง ทดสอบก่อนขยับ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>sv_enableNetworkedSounds false\u003C\u002Fcode>\u003C\u002Fstrong> และ \u003Cstrong>\u003Ccode>sv_enableNetworkedPhoneExplosions false\u003C\u002Fcode>\u003C\u002Fstrong> ปิดสองช่องที่เอกสารของ Cfx.re ระบุว่าคนไม่หวังดีใช้บ่อย คือเสียงที่ยิงใส่ทั้งเซิฟและระเบิดผ่านโทรศัพท์ (ค่าหลังเป็น \u003Ccode>false\u003C\u002Fcode> อยู่แล้ว ตั้งไว้ให้ชัดว่าไม่มีใครเปิด)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>sv_scriptHookAllowed false\u003C\u002Fcode>\u003C\u002Fstrong> ห้าม client ที่ลง ScriptHook เข้าเซิฟ ค่าเริ่มต้นก็เป็น \u003Ccode>false\u003C\u002Fcode> สิ่งสำคัญคือ \u003Cstrong>อย่าเปิด\u003C\u002Fstrong> แม้ผู้เล่นจะขอ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>sv_endpointPrivacy true\u003C\u002Fcode>\u003C\u002Fstrong> ซ่อน IP ผู้เล่นจากข้อมูลสาธารณะของเซิฟ ลดโอกาสโดนยิง DDoS รายคน\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>sv_pureLevel\u003C\u002Fcode>\u003C\u002Fstrong> (ทางเลือก) \u003Ccode>1\u003C\u002Fcode> บล็อกไฟล์เกมที่ถูกแก้ ยกเว้นเสียงและม็อดกราฟิกที่รู้จัก \u003Ccode>2\u003C\u002Fcode> บล็อกทั้งหมด ระดับ 2 ทำให้คนที่ลงม็อดกราฟิกเข้าไม่ได้ เลือกตามกลุ่มผู้เล่นของคุณ\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>สองเรื่องที่ไม่ใช่ convar แต่ควรทำพร้อมกัน:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>ไม่ตั้ง \u003Ccode>rcon_password\u003C\u002Fcode>\u003C\u002Fstrong> ถ้าไม่ได้ใช้ RCON และให้สิทธิ์ command ผ่าน \u003Ccode>add_ace\u003C\u002Fcode> เฉพาะ \u003Ccode>group.admin\u003C\u002Fcode> ห้ามมี command ที่ให้ทุกคนใช้แล้วรันโค้ดได้\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ฐานข้อมูลห้ามเปิดพอร์ตสู่อินเทอร์เน็ต\u003C\u002Fstrong> และแผง txAdmin ใช้บัญชีแยกต่อแอดมิน ห้ามแชร์บัญชี master\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote>\n\u003Cp>ตั้งค่าใน \u003Ccode>server.cfg\u003C\u002Fcode> แล้ว \u003Cstrong>restart เซิฟทั้งตัวผ่าน txAdmin\u003C\u002Fstrong> ไม่ใช่สั่ง \u003Ccode>restart\u003C\u002Fcode> resource บางค่าอ่านตอนเปิดเซิฟเท่านั้น\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"ชั้น-2-เศรษฐกิจ-ชั้นที่ไม่มี-anticheat-ตัวไหนทำแทนได้\">ชั้น 2: เศรษฐกิจ — ชั้นที่ไม่มี anticheat ตัวไหนทำแทนได้\u003C\u002Fh2>\n\u003Cp>menu โกงทุกตัวยิง event ของสคริปคุณได้ตรง ๆ พร้อมค่าอะไรก็ได้ ถ้า event ขายของรับ &quot;จำนวน&quot; และ &quot;ราคา&quot; จาก client คนโกงก็แค่ส่ง 999999 anticheat ที่ดีที่สุดก็ไม่รู้ว่าค่านั้นผิด เพราะมันเป็น event ที่ถูกต้องของสคริปคุณเอง\u003C\u002Fp>\n\u003Cp>แบบที่เจอบ่อยและพัง:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">RegisterNetEvent('fishing:sell', function(count, price)\n    local xPlayer = ESX.GetPlayerFromId(source)\n    xPlayer.addMoney(count * price)\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>แบบที่เซิฟเป็นคนคิดทุกอย่าง:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">local SELL_POINT = vector3(-1845.0, -1195.0, 14.3)\nlocal PRICE = 120\nlocal COOLDOWN_MS = 2000\nlocal busy, lastSell = {}, {}\n\nRegisterNetEvent('fishing:sell', function()\n    local src = source\n    if economyLocked or busy[src] then return end\n    local now = GetGameTimer()\n    if lastSell[src] and now - lastSell[src] &lt; COOLDOWN_MS then return end\n\n    local xPlayer = ESX.GetPlayerFromId(src)\n    if not xPlayer or xPlayer.job.name ~= 'fisherman' then return end\n    if #(GetEntityCoords(GetPlayerPed(src)) - SELL_POINT) &gt; 5.0 then return end\n\n    local item = xPlayer.getInventoryItem('fish')\n    if not item or item.count &lt; 1 then return end\n\n    busy[src] = true\n    lastSell[src] = now\n    xPlayer.removeInventoryItem('fish', item.count)\n    xPlayer.addMoney(item.count * PRICE)\n    MySQL.insert.await('INSERT INTO economy_log (identifier, action, amount) VALUES (?, ?, ?)',\n        { xPlayer.identifier, 'fishing:sell', item.count * PRICE })\n    busy[src] = nil\nend)\n\nAddEventHandler('playerDropped', function()\n    busy[source], lastSell[source] = nil, nil\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>หลักที่อยู่ในโค้ดนี้ ใช้กับทุกสคริปที่ขยับเงินหรือไอเทม:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>client ส่งมาแค่ &quot;อยากทำอะไร&quot;\u003C\u002Fstrong> ราคา จำนวน และรางวัลคำนวณที่เซิฟทั้งหมด\u003C\u002Fli>\n\u003Cli>\u003Cstrong>เช็กซ้ำที่เซิฟทุกครั้ง\u003C\u002Fstrong> ระยะจากจุด อาชีพ ของในกระเป๋า คูลดาวน์ ฝั่ง client เช็กไว้แค่ให้ UI สวย ไม่ได้กันอะไร\u003C\u002Fli>\n\u003Cli>\u003Cstrong>หักของก่อน ให้ของทีหลัง\u003C\u002Fstrong> ถ้าสลับกัน event ที่ยิงซ้อนได้เงินก่อนที่ของจะหาย\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ล็อกต่อผู้เล่น\u003C\u002Fstrong> ทุก handler ที่มี \u003Ccode>await\u003C\u002Fcode> (เช่นรอฐานข้อมูล) เปิดช่องให้ event ตัวที่สองแทรกเข้ามากลางทาง นี่คือที่มาของดูปส่วนใหญ่\u003C\u002Fli>\n\u003Cli>\u003Cstrong>จำกัดความถี่\u003C\u002Fstrong> คนปกติขายของไม่กี่ครั้งต่อนาที event ที่ถูกยิงรัวคือสัญญาณชัดที่สุด\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"ล็อกเศรษฐกิจก่อนรีสตาร์ท\">ล็อกเศรษฐกิจก่อนรีสตาร์ท\u003C\u002Fh3>\n\u003Cp>ช่วงก่อนเซิฟรีสตาร์ทคือช่องดูปใหญ่ที่สุด ของที่โอนให้กันแล้วบันทึกไม่ทันจะกลับมาทั้งสองฝั่ง txAdmin ส่ง event เตือนก่อนรีสตาร์ทตามเวลาที่ตั้งไว้ ใช้มันหยุดธุรกรรมแล้วสั่งบันทึกผู้เล่นทั้งหมดด้วยฟังก์ชันของ framework\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">economyLocked = false\n\nAddEventHandler('txAdmin:events:scheduledRestart', function(eventData)\n    if eventData.secondsRemaining &lt;= 60 then\n        economyLocked = true\n    end\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ca href=\"\u002Fth\u002Fproducts\u002Fes-extended\u002F\">ESX Legacy Core — X3D Build\u003C\u002Fa> (ฟรี) ทำเรื่องนี้ให้ใน core และมี audit log ทุกการเปลี่ยนเงิน\u002Fไอเทม ส่ง Discord webhook\u003C\u002Fp>\n\u003Ch3 id=\"มินิเกมต้องยืนยันที่เซิฟ\">มินิเกมต้องยืนยันที่เซิฟ\u003C\u002Fh3>\n\u003Cp>มินิเกมงัดกุญแจ ตกปลา แฮ็ก ถ้า client ส่ง &quot;ผ่านแล้ว&quot; มาแล้วเซิฟให้รางวัลเลย คนโกงก็ส่ง &quot;ผ่านแล้ว&quot; ได้ทุกวินาที เซิฟต้องรู้ว่าใครเริ่มมินิเกมเมื่อไหร่ ปฏิเสธผลที่มาเร็วเกินกว่าคนเล่นจริงทำได้ และเลือกรางวัลเองที่เซิฟ\u003C\u002Fp>\n\u003Cp>ก่อนลงสคริปใหม่ทุกตัว เปิดไฟล์ฝั่ง server หา \u003Ccode>RegisterNetEvent\u003C\u002Fcode> แล้วดูว่า handler รับเงินหรือจำนวนจาก client ไหม ถ้ารับ อย่าลง อ่านเพิ่มใน\u003Ca href=\"\u002Fth\u002Fblog\u002Fcheck-safe-fivem-scripts\u002F\">วิธีเช็คสคริป FiveM ปลอดภัย\u003C\u002Fa> และเลือกร้านตาม\u003Ca href=\"\u002Fth\u002Fblog\u002Fbuy-fivem-scripts\u002F\">ซื้อสคริป FiveM ที่ไหนดี\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"ชั้น-3-กันก่อกวนผู้เล่นอื่น\">ชั้น 3: กันก่อกวนผู้เล่นอื่น\u003C\u002Fh2>\n\u003Cp>menu โกงใช้ game event ของ GTA สั่งผลกับผู้เล่นคนอื่น เช่น ยัดปืน ถอดปืนทั้งตัว หรือล้างท่าทางจนหลุดจากรถ FXServer บล็อก game event เหล่านี้ได้ทั้งเซิฟด้วย \u003Ccode>block_net_game_event\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-cfg\">block_net_game_event &quot;GIVE_WEAPON_EVENT&quot;\nblock_net_game_event &quot;REMOVE_WEAPON_EVENT&quot;\nblock_net_game_event &quot;REMOVE_ALL_WEAPONS_EVENT&quot;\nblock_net_game_event &quot;NETWORK_CLEAR_PED_TASKS_EVENT&quot;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>ระบบปืนที่ทำผ่าน inventory ฝั่งเซิฟไม่กระทบ เพราะไม่ได้ใช้ event เหล่านี้ยิงใส่ผู้เล่นคนอื่น ส่วนสคริปตำรวจบางตัวที่ล้างท่าของคนอื่นจากฝั่ง client (ใส่กุญแจมือ ลาก) อาจต้องแก้ ทดสอบบนเซิฟ dev ก่อน และเหมือนชั้น 1 คือต้อง restart เซิฟทั้งตัว\u003C\u002Fp>\n\u003Ch3 id=\"ระเบิด-เก็บ-log-ก่อน-แล้วค่อยบล็อก\">ระเบิด: เก็บ log ก่อน แล้วค่อยบล็อก\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-lua\">local allowedExplosion = {}\nlocal enforce = false\n\nAddEventHandler('explosionEvent', function(sender, ev)\n    if allowedExplosion[ev.explosionType] then return end\n    print(('[explosion] %s (%s) type=%d'):format(GetPlayerName(sender), sender, ev.explosionType))\n    if enforce then CancelEvent() end\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>เปิดไว้แบบ \u003Ccode>enforce = false\u003C\u002Fcode> หนึ่งสัปดาห์ จดประเภทระเบิดที่เกิดจากการเล่นปกติ (รถระเบิด ปั๊มน้ำมัน สคริปปล้นที่ใช้ระเบิด) ใส่ใน \u003Ccode>allowedExplosion\u003C\u002Fcode> แล้วค่อยเปิด \u003Ccode>enforce = true\u003C\u002Fcode> ถ้าบล็อกทันทีโดยไม่เก็บ log ก่อน คุณจะทำให้สคริปปล้นของตัวเองพัง\u003C\u002Fp>\n\u003Ch3 id=\"ถ้ายังเปิด-entity-lockdown-ไม่ได้\">ถ้ายังเปิด entity lockdown ไม่ได้\u003C\u002Fh3>\n\u003Cp>ระหว่างย้ายสคริปไปสร้าง entity ฝั่งเซิฟ ใช้ \u003Ccode>entityCreating\u003C\u002Fcode> ยกเลิกโมเดลที่ไม่ควรมีในเมืองไปก่อน:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">local blockedModels = {\n    [`rhino`] = true,\n    [`hydra`] = true,\n    [`lazer`] = true,\n}\n\nAddEventHandler('entityCreating', function(entity)\n    if blockedModels[GetEntityModel(entity)] then\n        CancelEvent()\n    end\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>อาวุธหนัก (RPG, Minigun, Railgun) ไม่ควรอยู่ในระบบไอเทมของเมืองเลย ถ้ามีคนใช้ แปลว่าได้มาผิดทาง เก็บ log ส่งแอดมิน\u003C\u002Fp>\n\u003Ch2 id=\"ชั้น-4-ยืนยันตัวตนและกันหนีแบน\">ชั้น 4: ยืนยันตัวตนและกันหนีแบน\u003C\u002Fh2>\n\u003Cp>แบนแล้วคนโกงกลับมาด้วยบัญชีใหม่ใน 5 นาที แปลว่าการแบนไม่มีความหมาย ด่านแรกอยู่ตอนเชื่อมต่อ:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">AddEventHandler('playerConnecting', function(name, setKickReason, deferrals)\n    local src = source\n    deferrals.defer()\n    Wait(0)\n\n    local license = GetPlayerIdentifierByType(src, 'license')\n    local discord = GetPlayerIdentifierByType(src, 'discord')\n    if not license or not discord then\n        return deferrals.done('กรุณาเปิด Discord และเข้าสู่ระบบ Rockstar ก่อนเข้าเซิฟ')\n    end\n\n    if isBanned(license) or isBanned(discord) then\n        return deferrals.done('บัญชีนี้ถูกแบน ติดต่อทีมงานผ่าน Discord')\n    end\n    for i = 0, GetNumPlayerTokens(src) - 1 do\n        if isBanned(GetPlayerToken(src, i)) then\n            return deferrals.done('เครื่องนี้ถูกแบน ติดต่อทีมงานผ่าน Discord')\n        end\n    end\n\n    deferrals.done()\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>isBanned\u003C\u002Fcode> คือฟังก์ชันเช็กฐานข้อมูลแบนของคุณเอง สิ่งที่โค้ดนี้ทำ:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>บังคับ Discord + Rockstar License\u003C\u002Fstrong> คนที่ไม่มี identifier ครบเข้าไม่ได้ แบนแล้วต้องสร้างใหม่หลายบัญชีพร้อมกัน\u003C\u002Fli>\n\u003Cli>\u003Cstrong>แบนด้วย token ของเครื่อง\u003C\u002Fstrong> \u003Ccode>GetPlayerToken\u003C\u002Fcode> คือค่าที่ผูกกับฮาร์ดแวร์ ใช้แบนระดับเครื่องแบบพื้นฐานได้ ตอนแบน เก็บทั้ง identifier และ token ทุกตัวลงฐานข้อมูล\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Account Lock\u003C\u002Fstrong> ผูกชุด license + discord (+ steam ถ้าใช้) กับตัวละครตั้งแต่ครั้งแรก ถ้า license เดิมเข้ามาพร้อม discord คนละบัญชี ให้ปฏิเสธและให้ติดต่อแอดมิน\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Discord whitelist\u003C\u002Fstrong> (ต้องอยู่ใน Discord ของเซิฟถึงเข้าได้) ทำได้ด้วยการเรียก Discord API ผ่าน bot ตอน \u003Ccode>playerConnecting\u003C\u002Fcode> เก็บ bot token ใน \u003Ccode>server.cfg\u003C\u002Fcode> ด้วย \u003Ccode>set\u003C\u002Fcode> เท่านั้น ห้ามใช้ \u003Ccode>setr\u003C\u002Fcode> (ส่งไปทุก client) หรือ \u003Ccode>sets\u003C\u002Fcode> (แสดงในข้อมูลสาธารณะของเซิฟ)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ร้านเน็ตต้องระวัง\u003C\u002Fstrong> หลายคนใช้เครื่องเดียวกัน token จึงซ้ำกันได้ บัญชีที่ token ตรงกับคนโดนแบน ให้ส่งแอดมินตรวจ อย่าแบนอัตโนมัติจาก token อย่างเดียว เช่นเดียวกับบัญชีซ้ำ (หลาย license บนเครื่องเดียว) ใช้เป็นหลักฐานประกอบ ไม่ใช่คำตัดสิน\u003C\u002Fp>\n\u003Cp>ไม่อยากเขียนเอง: \u003Ca href=\"\u002Fth\u002Fproducts\u002Fx3d-adminpanel\u002F\">X3D Admin Panel\u003C\u002Fa> (ฟรี) แบนด้วย identifier + token ของเครื่องให้ มีฐานข้อมูลผู้เล่นทุกคนที่เคยเข้าพร้อมบัญชีที่ใช้เครื่องร่วมกัน และนำเข้าแบนจาก txAdmin ได้ ค่าเริ่มต้นจะเพิ่มบัญชีใหม่จากเครื่องเดิมเข้าแบนเดิม (\u003Ccode>spreadOnEvade\u003C\u002Fcode> ใน \u003Ccode>config\u002Fconfig.sanctions.lua\u003C\u002Fcode>) ถ้าผู้เล่นมาจากร้านเน็ตเยอะ ให้พิจารณาตรงนี้ตามข้อข้างบน\u003C\u002Fp>\n\u003Ch2 id=\"ชั้น-5-log-และหลักฐาน\">ชั้น 5: log และหลักฐาน\u003C\u002Fh2>\n\u003Cp>ไม่มี anticheat ไม่ได้แปลว่ามองไม่เห็น เครื่องมือฟรีที่ควรใช้ให้ครบ:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>txAdmin\u003C\u002Fstrong> แบน เตือน ประวัติผู้เล่น และ action log ของแอดมินในตัว แบนผ่าน txAdmin ทุกครั้งเพื่อให้มีบันทึกว่าใครแบนใคร เพราะอะไร (ตั้งค่าครบใน\u003Ca href=\"\u002Fth\u002Fblog\u002Ftxadmin-fivem-guide\u002F\">คู่มือ txAdmin\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"\u002Fth\u002Fproducts\u002Fx3d-adminpanel\u002F\">X3D Admin Panel\u003C\u002Fa>\u003C\u002Fstrong> (ฟรี) เก็บ log เงิน ไอเทม อาชีพ แชต เข้า\u002Fออก และทุก action ของแอดมินลงฐานข้อมูล ค้นรายคนได้ในแผงเดียว แอดมินทำกับยศเท่ากันหรือสูงกว่าไม่ได้\u003C\u002Fli>\n\u003Cli>\u003Cstrong>log เงินและไอเทมลงฐานข้อมูลทุกครั้ง\u003C\u002Fstrong> แล้วส่ง Discord เฉพาะรายการผิดปกติ webhook ของ Discord มี rate limit ที่ 2,000 คนส่งทุกรายการไม่ไหว และไม่มีใครอ่านทัน\u003C\u002Fli>\n\u003Cli>\u003Cstrong>screenshot-basic\u003C\u002Fstrong> resource ของ Cfx.re ให้แอดมินขอภาพหน้าจอผู้เล่นที่สงสัยได้ เก็บไว้เป็นหลักฐานก่อนตัดสิน\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ทีมแอดมิน\u003C\u002Fstrong> spectate ผ่าน txAdmin ได้ เมือง 2,000 คนต้องมีคนดู log ผลัดกะ ไม่ใช่ดูเฉพาะตอนมีคนแจ้ง\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"เรื่องที่ไม่ควรประกาศ\">เรื่องที่ไม่ควรประกาศ\u003C\u002Fh3>\n\u003Cp>ประกาศได้ว่าเซิฟ &quot;มีระบบป้องกัน&quot; แต่ \u003Cstrong>อย่าประกาศรายละเอียดการตรวจจับ ค่าเกณฑ์ หรือชื่อ resource ป้องกัน\u003C\u002Fstrong> ในเว็บหรือ Discord สาธารณะ ข้อมูลพวกนี้คือคู่มือหลบให้คนทำโปร และ \u003Cstrong>อย่าเขียนว่า &quot;กันโปร 100%&quot;\u003C\u002Fstrong> วันที่มีคนโดนโปรแล้วเจอคำนี้ เซิฟเสียความน่าเชื่อถือทันที\u003C\u002Fp>\n\u003Ch2 id=\"ที่-2-000-คน-อะไรเปลี่ยน\">ที่ 2,000 คน อะไรเปลี่ยน\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>FXServer มี rate limiter ของ net event ในตัว\u003C\u002Fstrong> (\u003Ccode>rateLimiter_netEvent_*\u003C\u002Fcode>, \u003Ccode>rateLimiter_netEventFlood_*\u003C\u002Fcode>) ค่าเริ่มต้นใช้ได้กับเซิฟส่วนใหญ่ ถ้าผู้เล่นปกติโดนตัดเพราะ event flood ให้หาสคริปที่ยิง event ถี่เกินแล้วแก้ที่สคริป แทนการขยายลิมิตให้คนโกงใช้ด้วย\u003C\u002Fli>\n\u003Cli>\u003Cstrong>entity lockdown สำคัญขึ้น\u003C\u002Fstrong> client ที่ถูกแก้ 20 เครื่องเสก entity พร้อมกันพอทำให้ทั้งเมืองกระตุก\u003C\u002Fli>\n\u003Cli>\u003Cstrong>log ต้องลงฐานข้อมูล\u003C\u002Fstrong> ไม่ใช่ไฟล์หรือ webhook ทุกรายการ และต้องค้นได้ตาม identifier\u003C\u002Fli>\n\u003Cli>\u003Cstrong>เช็ก Discord ตอนเข้าเซิฟต้องมี cache\u003C\u002Fstrong> หลังรีสตาร์ท คน 1,000 กว่าคนกดเข้าพร้อมกัน เรียก Discord API ทีละคนโดน rate limit คนรอคิวค้าง\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ทีมแอดมินคือส่วนหนึ่งของระบบป้องกัน\u003C\u002Fstrong> ไม่มีเครื่องมือไหนแทนคนที่ดู log และตัดสินด้วยหลักฐาน\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"เมื่อไหร่ถึงควรมี-anticheat\">เมื่อไหร่ถึงควรมี anticheat\u003C\u002Fh2>\n\u003Cp>ทำครบ 5 ชั้นแล้ว สิ่งที่ยังเหลือคือการโกงฝั่ง client ล้วน ๆ: god mode, speed hack, noclip, ล่องหน, aimbot พวกนี้ต้องมีตัวตรวจที่รันในเครื่องผู้เล่น ซึ่งคือหน้าที่ของ anticheat เทียบตัวฟรีกับตัวเสียเงินได้ใน\u003Ca href=\"\u002Fth\u002Fblog\u002Ffivem-anticheat-free-vs-paid\u002F\">Anticheat FiveM ฟรี vs เสียเงิน\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"\u002Fth\u002Fproducts\u002Fx3d-anticheat\u002F\">X3D Anti-Cheat\u003C\u002Fa> ออกแบบให้ทำงานบนฐานนี้: เก็บภาพหน้าจอเป็นหลักฐานส่ง Discord แจ้งแอดมินในเมือง แบน HWID ผูกบัญชี Steam + Discord และให้คนตัดสินเคสที่ไม่ชัด ทดลองฟรี 7 วันบนเซิฟจริง และถ้าอยากเห็นว่ารอบช่วงที่ถูกจับมีอะไรเกิดขึ้น \u003Ca href=\"\u002Fth\u002Fproducts\u002Fx3d-replay\u002F\">X3D Replay\u003C\u002Fa> (BETA, ESX) ให้แอดมินดูย้อนหลังผู้เล่นในเกมพร้อมปุ่มที่กด\u003C\u002Fp>\n\u003Ch2 id=\"คำถามที่พบบ่อย\">คำถามที่พบบ่อย\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>ตั้ง \u003Ccode>sv_entityLockdown relaxed\u003C\u002Fcode> แล้วรถจากโรงรถหรือพร็อพในมือหาย ทำยังไง\u003C\u002Fstrong> — สคริปนั้นสร้าง entity ฝั่ง client ต้องแก้ให้สร้างที่เซิฟ หรือเปลี่ยนไปใช้สคริปที่รองรับ lockdown ระหว่างแก้ ให้ตั้ง lockdown เฉพาะบาง routing bucket หรือใช้ \u003Ccode>entityCreating\u003C\u002Fcode> บล็อกโมเดลต้องห้ามไปก่อน\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>block_net_game_event\u003C\u002Fcode> ทำให้ระบบยึดปืนของตำรวจพังไหม\u003C\u002Fstrong> — ระบบที่ยึดผ่าน inventory ฝั่งเซิฟไม่พัง สคริปที่ถอดปืนคนอื่นจากฝั่ง client ตรง ๆ จะใช้ไม่ได้ ซึ่งเป็นช่องเดียวกับที่ menu โกงใช้ ควรแก้สคริปนั้นอยู่แล้ว\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ร้านเน็ตใช้เครื่องเดียวกันหลายคน แบน token จะโดนคนอื่นไหม\u003C\u002Fstrong> — โดนได้ ใช้ token เป็นหลักฐานประกอบและส่งแอดมินตรวจ ไม่ใช่แบนอัตโนมัติ\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ทำครบ 5 ชั้นแล้วกันโปรได้ 100% ไหม\u003C\u002Fstrong> — ไม่มีเซิฟไหนทำได้ 5 ชั้นนี้ปิดช่องที่ทำความเสียหายมากที่สุด (ปั๊มเงิน เสกของ ก่อกวนคนอื่น หนีแบน) ส่วนที่เหลือคือ anticheat และทีมแอดมิน\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ไม่มีเงินซื้อสคริปเลย เริ่มตรงไหน\u003C\u002Fstrong> — ใช้ core ที่ล็อกเศรษฐกิจก่อนรีสตาร์ทและสคริปที่ตรวจฝั่งเซิฟ ซึ่งแจกฟรีอยู่ใน\u003Ca href=\"\u002Fth\u002Fblog\u002Ffree-fivem-scripts\u002F\">บทความแจกสคริป FiveM ฟรี\u003C\u002Fa> และวางงบเปิดเซิฟตาม\u003Ca href=\"\u002Fth\u002Fblog\u002Fopen-fivem-server-budget\u002F\">งบเปิดเซิฟ FiveM\u003C\u002Fa>\u003C\u002Fp>\n",[24,29,34,38],{"slug":25,"title":26,"description":27,"date":28,"updated":21},"open-fivem-server-budget","เปิดเซิฟ FiveM กี่บาท ใช้อะไรบ้าง — งบและสคริปที่ต้องมี ตั้งแต่ 32 คนถึงเมือง 2,000 คน (2026)","รวมสคริปที่จำเป็นสำหรับเปิดเซิร์ฟเวอร์ FiveM 2026 พร้อมงบ 3 สเกล: เริ่มต้น 32–64 คน, เปิดสาธารณะ 128–500 คน, เมืองใหญ่ 1,000–2,048 คน (Element Club Platinum, เครื่อง dedicated, เสียงแยก, DB แยก, ทีมงาน) ตัวไหนใช้ของฟรีได้ ตัวไหนควรจ่าย ตัวไหนต้องเขียนใหม่เมื่อคนถึงสองพัน","2026-09-15",{"slug":30,"title":31,"description":32,"date":33,"updated":21},"fivem-anticheat-free-vs-paid","Anticheat FiveM ฟรี vs เสียเงิน 2026 — จากเซิฟเล็กถึงเมือง 2,000 คน เลือกยังไงไม่แบนมั่วและไม่ทำเซิฟหน่วง","เทียบ anticheat FiveM แบบฟรี (สคริปต์ตรวจ event, sv_scriptHookAllowed, ban list) กับแบบเสียเงิน (FiveGuard, WaveShield, X3D Anti-Cheat) ว่าตรวจอะไรได้ ไม่ได้ ราคาเท่าไหร่ false positive มาจากไหน เซิฟขนาดไหนถึงคุ้ม และที่เมือง 1,000–2,048 คน anticheat ต้องมีอะไรและห้ามทำอะไรถึงจะไม่ทำเซิฟหน่วง พร้อม checklist กันโกงที่ทำได้ฟรีก่อนซื้อ","2026-09-24",{"slug":35,"title":36,"description":37,"date":21},"fivem-replay-system","ระบบ Replay FiveM ดูย้อนหลังผู้เล่นในเกม: ตัดสินเคสรีพอร์ต จับโกง จับมาโคร (ESX)","X3D Replay ระบบรีเพลย์ FiveM สำหรับ ESX บันทึกผู้เล่นทุกคนอัตโนมัติ แอดมินดูย้อนหลังในเกมด้วยกล้อง 4 แบบ ไทม์ไลน์ยิง\u002Fตาย ปุ่มที่กด และสคริปต์ที่ใช้ พร้อมการ์ดยอมรับ ที่เก็บไฟล์ ราคา BETA และทดลองฟรี 7 วัน",{"slug":39,"title":40,"description":41,"date":42,"updated":21},"fivem-admin-panel-free","เมนูแอดมิน FiveM ฟรี (แผงแอดมิน): แบนด้วย token จับบัญชีสำรอง ดูกระเป๋าผู้เล่น log ทุกระบบ — ใช้คู่กับ txAdmin ยังไง","X3D Admin Panel แผงแอดมิน FiveM ฟรีสำหรับ ESX และ standalone: จัดการผู้เล่น ส่องแบบล่องหน ดูกระเป๋าและอาวุธ แจกเงิน\u002Fไอเทม แบนด้วย identifier + token ของเครื่องจนบัญชีสำรองเข้าไม่ได้ ฐานข้อมูลผู้เล่น log เงิน ไอเทม แชต ยศและสิทธิ์ นำเข้าแบนจาก txAdmin และแบ่งงานกับ txAdmin ยังไงให้ไม่ซ้ำ","2026-10-05",[],{"site":45,"contact":47,"seo":48,"payment":49},{"name":5,"host":6,"default_locale":7,"locales":46},[7,9],{"discord_invite":11,"email":12,"line":12},{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},[],1792316310824]