Recent posts

#21
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()
#22
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
}
}
#23
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);
}
#24
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
}
#25
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
}
#26
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
#27
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.
#28
Servers / Re: [0.4]Grand Theft Auto Syri...
Last post by Abbas_905 - Mar 05, 2024, 02:04 PM
Nice bro
#29
Bugs and Crashes / Re: [Bug]One bug in squirrel m...
Last post by PSL - Mar 05, 2024, 11:35 AM
GetShowOnlyTeamMarkers()
This function gets an error every time it is called.
Hopefully the developers can fix it.
#30
Community Plugins / Re: NPC/Bots implementation in...
Last post by PSL - Mar 05, 2024, 02:48 AM
This problem has been fixed perfectly, and I'm sorry to have caused you so much trouble.