Skip to content
View in the app

A better way to browse. Learn more.

LCPDFR.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

i can't load my own plugin

Featured Replies

I'm trying to make some stuff plugins by myself but i cant load them in game so i will drop my logs and the point of the problems ( i'm so sorry for my stupid English )
my error : [12/1/2023 11:11:04 PM.741] ERROR: Could not load plugin from "E:\GTAV\Plugins\MyPolicePlugin.dll". Assembly MyPolicePlugin.dll (MyPolicePlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null) specifies EntryPoint as "MyPolicePlugin.MyPolicePlugin"; however a type could not be resolved from "MyPolicePlugin".
my logs here RagePluginHook_01122023_160740.log

6 hours ago, Dat Nguyen said:

Assembly MyPolicePlugin.dll (MyPolicePlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null) specifies EntryPoint as "MyPolicePlugin.MyPolicePlugin"; however a type could not be resolved from "MyPolicePlugin".
my logs here : ...

Your log is from 22. Nov -is that the newest you have? (Newest is always in your main GTAV-folder)
How does your Assembly-statement look?
What kind of plugin have you made? RPH or LSPD? (Different folders used for the dll)
 

See my plugin here:
https://www.youtube.com/watch?v=peqSXuTfIyY

Let me know if you find it interesting.
Best Regards.

14 hours ago, Dat Nguyen said:

RagePluginHook_01122023_160740.logthat's a newest logs from GTAV folder i was checking the time that's show 01/12/2023 so that might be a newest

 

, btw im try to making lspdfr plugin

@GTAbearsorry for metion i'm just make sure you see my reply 

 

that's a newest logs from GTAV folder i was checking the time that's show 01/12/2023 so that might be a newest

Oki.
 

btw im try to making lspdfr plugin

Ok, then your compiled dll must be in GTAV\plugins\LSPDFR\
is the dll in that folder?

 

Quote

sorry for metion i'm just make sure you see my reply 


I have never understood why some do not want to be pinged, the forum is supposed to work like that. Do never feel sorry for pinging me.


If your compiled dll is in folder GTAV\plugins\LSPDFR\, then there are two more things that can stop your dll from loading. The first is a missing or wrong-formulated Assembly-statement, that was why i asked for that.
You must have an assembly-statement in your code!
It must be inserted right after your using block last statement.

The second thing is a missing main-thread delegate & Yield-statement.
You must set a thread for your Plugin -eg
            GameFiber fiber = GameFiber.StartNew(delegate

//game-loop

:

});//delegate
and make main-thread Yielding, -eg
just before
});//delegate
GameFiber.Yield();
because your plugin need to get an entry in the Main-thread


So we get:

GameFiber fiber = GameFiber.StartNew(delegate


//whole game-loop!


GameFiber.Yield();

		});//delegate
	}//game-loop
}//main

Do you have that?

@Dat Nguyen

See my plugin here:
https://www.youtube.com/watch?v=peqSXuTfIyY

Let me know if you find it interesting.
Best Regards.

  • 4 months later...

Hi guys, just want to add another comment here. After taking many many babysteps, i finally got my plugin running. I Followed this tutorial https://docs.google.com/document/d/1wpxOp67iJNu3V0z0ZLkjgGewni_Umu80UNiaaXVjS7w/edit

 

but unfortunately there is nothing described regarding the GameFiber function. After i understood the united callout code a bit more, i adapted mine and now it works.

I just want to share it for any newbies like me, because it took me like 2 days to figure this out 😄

 

thanks,

best regards,

totem

namespace ConventionalCallouts
{
    public class Main : Plugin
    {

        public override void Finally() 
        {
            Game.LogTrivial("ConventionalCallouts version 1.0.0 has been cleaned up.");
        }

        public override void Initialize()
        {
            Functions.OnOnDutyStateChanged += OnOnDutyStateChangedHandler;
            Game.LogTrivial("ConventionalCallouts version 1.0.0 has been initialized.");
        }

        static void OnOnDutyStateChangedHandler(bool onDuty)
        {
            if (onDuty)
                GameFiber.StartNew(delegate
                {
                    RegisterCallouts();
                    Game.Console.Print();
                    Game.Console.Print("=============================================== ConventionalCallouts ================================================");
                    Game.Console.Print();
                    Game.Console.Print("[LOG]: Callouts and settings were loaded successfully.");
                    Game.Console.Print("[LOG]: The config file was loaded successfully.");
                    Game.Console.Print("[VERSION]: Detected Version: " + Assembly.GetExecutingAssembly().GetName().Version);
                    Game.Console.Print("[LOG]: Checking for a new UnitedCallouts version...");
                    Game.Console.Print();

                    Game.DisplayNotification("ConventionalCallouts", "~y~v" + Assembly.GetExecutingAssembly().GetName().Version + "successfully loaded!");

                    GameFiber.Wait(300);

                });
        }

 

  • Community Team

A little info about a gamefiber:

a gamefiber makes sense if you want to work with time, or if you want to wait between fixed actions.

you start the gamefiber with gamefiber.startnew(delegate

the next line should always be gamefiber.yield();

it’s complicated to explain why, but important.

In the gamefiber, you then can do: gamefiber.wait(1000);

the 1000 is the time in miliseconds Before the next line gets executed. You can replace the number (with f.e. 10000, which would be 10 seconds.)

 

as always, if you start a gamefiber in your process section (which loops), make sure to call the gamefiber only once.

 

if you want a callout to end &/ or want the gamefiber to end, you can call gamefiber.abort(); , which instantly ends the gamefiber. Therefore make sure the gamefiber is not null & gamefiber.isalive

 

more commands here.

Edited by Yasd

Creator of MCCallouts 🚓🕵🏽‍♂️
Check out the MCCallouts
Discord Server! 💻

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.