• [THÔNG BÁO] CẢNH BÁO LỪA ĐẢO MẠO DANH QUẢN TRỊ VIÊN
    Chào các thành viên GameVN,
    Dạo gần đây tình trạng lừa đảo scamming và phishing đang gia tăng. Ban quản trị GameVN xin lưu ý toàn bộ thành viên:
    KHÔNG/ ĐỪNG / CẤM cho bất kỳ ai tự xưng là quản trị viên của server vay tiền.
    Mọi hành vi lân la làm quen, tự tiện nhắn tin trên Discord, Facebook, Zalo hoặc các nền tảng mạng xã hội khác,
    núp bóng dưới danh nghĩa sinh hoạt của quản trị viên, đều có tỉ lệ rất, rất cao là lừa đảo.
    Nếu có tài khoản lạ add friend hoặc nhắn tin xin tiền dưới danh nghĩa admin:
    Block ngay
    Report ngay
    Không chuyển khoản, không cung cấp thông tin cá nhân


    Quản trị viên của forum và Discord server GameVN không có nhu cầu vay tiền thành viên.
    Không có lý do nào để admin chủ động kết bạn rồi xin tiền.
    Mọi thông báo chính thức chỉ được đăng trên kênh thông báo của server và topic chính thức trên forum.
    Tin nhắn riêng từ tài khoản lạ không phải thông báo của ban quản trị.
    Cảm ơn các bạn đã chú ý và cùng giữ cộng đồng an toàn.
    — Ban quản trị GameVN

    Tắt thông báo bằng nút X bên góc phải của bảng thông báo*

Hướng dẫn lập trình giao thông trong GTA IV.

HacBachVoThuong

Legend of Zelda
Tham gia ngày
26/11/05
Bài viết
1,071
Reaction score
7
Điểm yếu của hệ thống giao thông trong GTA IV là gì? đó là không giống thật. Thực tế ở ngoài xe cộ đi trên đường ko chỉ có đạp thắng và lên ga mà phải tùy tốc độ mình đang chạy, tùy tình huống trên đường mà phát sinh lách né, đạp thắng từ xa, rồ ga vượt mặt... và phản ứng của mỗi người là khác nhau. Vì vậy mới cần lập trình lại hệ thống giao thông trong GTA IV cho giống thật.

Ghi là lập trình vậy thôi chứ dễ ẹc chả có gì khó, mình cũng chả biết gì về VB mà vẫn hiểu được tí xíu. Các bác down file nén ở dưới về, giải nén vào thư mục gta IV version 1.0.7.0 rồi vào thư mục scripts để mở file traffic.vb ra chỉnh sửa bằng notepad.
File traffic đã được mình làm sẵn theo ý của mình, các bác có thể chỉnh sửa tùy ý. ví dụ, khi open file traffic nó sẽ có những dòng sau:

Imports System
Imports System.Collections
Imports System.Drawing
Imports System.Windows.Forms
Imports GTA

Public Class Traffic
Inherits Script

Private xephiatruoc As Vehicle :gán tên cho xe phía trước, tác dụng là để canh khoảng cách tránh ủi đít xe. cái này các bác ko cần sửa chữa gì cả.

Private xehientai As Vehicle : khỏi nói cũng hiểu đây là xe đang xét.

Private Sub PanicTraffic_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Tick
World.UnlockAllIslands()

Dim vehicles As vehicle() = world.getvehicles(player.character.Position, 90.0F) : gom hết những xe trong khoảng cách 90 so với người chơi để chỉnh sửa giao thông.


For Each vehicle As Vehicle In vehicles
If exists(vehicle) Then

Dim ped As Ped = vehicle.getpedonseat(vehicleseat.Driver) '


xehientai=vehicle
xephiatruoc = World.GetClosestVehicle(xehientai.Position, 10.0F) : xe phía trước ta chọn trong khoảng 10 là đủ dùng theo ý tui.

If exists(ped) AndAlso ped.isrequiredformission = False AndAlso xehientai.Speed >= 0 AndAlso xehientai.Speed < 40 AndAlso not exists(xephiatruoc) Then : nếu tốc độ xe đang xét >=0 và <40 và ko có xe phía trước trong khoảng 10 thì:
ped.Task.CruiseWithVehicle(xehientai, 35.0F, false) : chạy thả ga với tốc độ cao nhất là 35, lưu ý tốc độ 35 tương đương với 105 km/h. chữ false sau cùng nghĩa là thấy đèn đỏ thì vẫn vượt, thấy xe phía trước thì đánh tay lái né chứ ko thắng gấp...
ped.nolongerneeded()
End If



If exists(ped) AndAlso ped.isrequiredformission = False AndAlso xehientai.Speed >= 10 AndAlso xehientai.Speed < 40 AndAlso exists(xephiatruoc) AndAlso xephiatruoc.speed > 15 Then : nếu tốc độ xe đang xét >=10 và <40 và có xe phía trước trong khoảng 10 và tốc độ xe phía trước >15, tức là xe phía trước đang chạy nhanh chứ ko thắng gấp thì:


ped.Task.CruiseWithVehicle(xehientai, 25.0F, true) : chạy vừa vừa với tốc độ 25 (75km/h) nhưng cách chạy là true, có đèn đỏ thì phải ngừng, xe phía trước giảm tốc thì phải đạp thắng theo chứ ko lách.
ped.nolongerneeded()
End If


If exists(ped) AndAlso ped.isrequiredformission = False AndAlso xehientai.Speed >= 10 AndAlso xehientai.Speed < 40 AndAlso exists(xephiatruoc) AndAlso xephiatruoc.speed < 15 Then : nếu tốc độ xe đang xét >=10 và <40 và có xe phía trước và tốc độ xe phía trước chậm hơn 15 thì:


ped.Task.CruiseWithVehicle(xehientai, 15.0F, false) : chạy với tốc độ 15 (45km/h) nhưng chạy kiểu false, lỡ nó thắng gấp thì ta cứ đánh tay lái lách.
ped.nolongerneeded()
End If



If exists(ped) AndAlso ped.isrequiredformission = False AndAlso xehientai.Speed >= 0 AndAlso xehientai.Speed < 10 AndAlso exists(xephiatruoc) Then :nếu đơn giản tốc độ xe đang xét >=0 và <10 và có xe phía trước, tốc độ xe phía trước ko cần quan tâm.

ped.Task.CruiseWithVehicle(xehientai, 30.0F, true) : chạy tốc 30 (90km/h và chạy đàng hoàng)
ped.nolongerneeded()
End If




End If
Next
End Sub
End Class






Bác nào muốn đơn giản là cho xe chạy vượt đèn đỏ, lạng lách lung tung thì chỉ việc để 1 dòng If như thế này:





Imports System
Imports System.Collections
Imports System.Drawing
Imports System.Windows.Forms
Imports GTA

Public Class Traffic
Inherits Script

Private xephiatruoc As Vehicle :gán tên cho xe phía trước, tác dụng là để canh khoảng cách tránh ủi đít xe. cái này các bác ko cần sửa chữa gì cả.

Private xehientai As Vehicle : khỏi nói cũng hiểu đây là xe đang xét.

Private Sub PanicTraffic_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Tick
World.UnlockAllIslands()

Dim vehicles As vehicle() = world.getvehicles(player.character.Position, 90.0F) : gom hết những xe trong khoảng cách 90 so với người chơi để chỉnh sửa giao thông.


For Each vehicle As Vehicle In vehicles
If exists(vehicle) Then

Dim ped As Ped = vehicle.getpedonseat(vehicleseat.Driver) '


xehientai=vehicle



If exists(ped) AndAlso ped.isrequiredformission = False AndAlso xehientai.Speed >= 0 AndAlso xehientai.Speed < 100 Then nếu đơn giản tốc độ xe đang xét >=0 và <100 (cứ x3 lên là ra km/h)

ped.Task.CruiseWithVehicle(xehientai, 100.0F, false) : chạy tốc max là 100 (300km/h tùy phân khối xe và chạy ẩu)
ped.nolongerneeded()
End If




End If
Next
End Sub
End Class


Hướng dẫn test nhanh: để khỏi phải thoát game mỗi lần test thì các bác cứ việc mở file script song song với game, khi nào cần sửa chữa thì bấm alt + tab ra ngoài để sửa rồi alt + tab vào game lại, bấm dấu ~ cho hiện bảng console rồi gõ:reloadscripts là game tự load script bạn mới chỉnh sửa.

Xong rồi, nếu bác nào lập trình được giao thông chạy nhanh mà vẫn an toàn thì gửi mình xem thử nhé. Mình làm lâu lâu vẫn gặp tai nạn hihi.
 

Attachments

Chỉnh sửa cuối:
Back
Top