Recent posts

#21
Community Plugins / Re: NPC/Bots implementation in...
Last post by vitovc - Mar 11, 2024, 11:14 AM
Quote from: PSL on Mar 11, 2024, 10:41 AMWhen the NPC is in the vehicle and is the driver, the vehicle cannot pass the Vehicle.AddSpeed to add speed.
its not a bug, same with idle (afk/away) player. addspeed works only when vehicle's syncer (player) is not away. you need to hande vehicle speed/pos by NPC's code, the driver of a car. its only correct method.
#22
Community Plugins / Re: NPC/Bots implementation in...
Last post by PSL - Mar 11, 2024, 10:41 AM
HI Habi, I understand your code and have successfully crafted the judgment NPCS. thank you very much.
When the NPC is in the vehicle and is the driver, the vehicle cannot pass the Vehicle.AddSpeed to add speed.
#23
Community Plugins / Re: NPC/Bots implementation in...
Last post by habi2 - Mar 11, 2024, 07:28 AM
Hi PSL, the remote function calls (RFC) in npcmodule unfortunately cannot return value from server. It can only execute code.
See RFC documentation https://npc-for-vcmp.sourceforge.io/wikiw/index.php/LibRPC_RFC for Return Values:
QuoteThis will return a function object which can be used as if it is the remote function itself.(except of return values)
So r will always be true.

I wrote a code to do this in two parts - serverscript and npcscript
//--npcscript
npclist<-array(100, false);
function RegisterNPC(playerid, isnpc)
{
npclist[playerid]=isnpc;
}
function OnPlayerStreamIn(playerid)
{
    print("I see the " GetPlayerName(playerid) " enter my field of view, and his ID is: " playerid ".");

    local r=npclist[playerid];

    if(r)print(" He is an npc\n");
}
//--server side
//when a new player joins inform all npcs if the player is PC(Playable Character) or NPC(Non Playable Character).

function onPlayerJoin(player)
{
local plr;
for(local i=0;i<GetMaxPlayers();i )
{
plr = FindPlayer(i);
if(plr && plr.IsNPC)
{
//Send information
RFC(i, "RegisterNPC")(player.ID, player.IsNPC);
}
}
//When an npc joins the server send information about all existing Characters (Playable or Non Playable) to it.
if(player.IsNPC)
{
for(local i=0;i<GetMaxPlayers();i++)
{
plr= FindPlayer(i);
if(plr)
RFC(player.ID, "RegisterNPC")(i, plr.IsNPC);
}
}
}


1. IsNPC or IsNPC()
#24
Script Showroom / Re: Dipeos command
Last post by PSL - Mar 10, 2024, 06:25 AM
Thanks to Xmair for the tip. I forgot about the player quitting.
Another point is that when the player falls into the water, the coordinates are not recorded.
DiePos<-{}; //Create a table where you can store coordinates
function onPlayerPart(player, reason) {
    if (DiePos.rawin(player.ID))
        DiePos.rawdelete(player.ID);
}

function onPlayerSpawn(player)
{
if(DiePos.rawin(player.ID)) //If an ID exists in the table
    {
        player.Pos=DiePos.rawget(player.ID); //Restores the player to death point
        DiePos.rawdelete(player.ID); //Delete coordinates after recovery
    }
}
function onPlayerDeath(player,reason)
{
 if(reason!=43)
{
 DiePos.rawset(player.ID,player.Pos); //After the player dies, the ID is used as the search object, and the death coordinates are stored in the table
}
}
#25
Script Showroom / Re: Dipeos command
Last post by Xmair - Mar 09, 2024, 06:56 PM
Quote from: PSL on Mar 09, 2024, 08:11 AMThe following code may help you
DiePos<-{}; //Create a table where you can store coordinates
function onPlayerSpawn(player)
{
if(DiePos.rawin(player.ID)) //If an ID exists in the table
    {
        player.Pos=DiePos.rawget(player.ID); //Restores the player to death point
        DiePos.rawdelete(player.ID); //Delete coordinates after recovery
    }
}
function onPlayerDeath(player,reason)
{
DiePos.rawset(player.ID,player.Pos); //After the player dies, the ID is used as the search object, and the death coordinates are stored in the table
}

You should also remove the player data once the player disconnects.
function onPlayerPart(player, reason) {
    if (DiePos.rawin(player.ID))
        DiePos.rawdelete(player.ID);
}
#26
Community Plugins / Re: NPC/Bots implementation in...
Last post by PSL - Mar 09, 2024, 02:54 PM
I always find problems as soon as you release a new version. Now I have no more problems to report.
This plugin is very good, with it you can make a lot of gameplay.
Hi Habi. How can I tell if an ID is an NPC player in an NPC script. Recognize players and NPCS. I don't want to give NPCS a uniform name or skin.
function OnPlayerStreamIn(playerid)
{
    print("I see the "+GetPlayerName(playerid)+" enter my field of view, and his ID is: "+playerid+".");

    local r=RFC("IsPlayerNPC")(playerid);
    print(""+r+""); //Always return true
}
#27
Script Showroom / Re: Dipeos command
Last post by PSL - Mar 09, 2024, 08:11 AM
The following code may help you
DiePos<-{}; //Create a table where you can store coordinates
function onPlayerSpawn(player)
{
if(DiePos.rawin(player.ID)) //If an ID exists in the table
    {
        player.Pos=DiePos.rawget(player.ID); //Restores the player to death point
        DiePos.rawdelete(player.ID); //Delete coordinates after recovery
    }
}
function onPlayerDeath(player,reason)
{
DiePos.rawset(player.ID,player.Pos); //After the player dies, the ID is used as the search object, and the death coordinates are stored in the table
}
#28
Script Showroom / Dipeos command
Last post by Abbas_905 - Mar 08, 2024, 01:24 PM
Anyone i want diepos command u can give me diepos command i want to add, diepos command in my server
#29
Community Plugins / Re: NPC/Bots implementation in...
Last post by habi2 - Mar 06, 2024, 05:32 PM
No need to apologize! I'm glad that the problem is fixed.
#30
Servers / Re: [0.4]Grand Theft Auto Syri...
Last post by Abbas_905 - Mar 05, 2024, 02:04 PM
Nice bro