function onScriptLoad()
{
PlayerKeys<-{};
ProcessKey<-{};
ProcessKeyTime<-100; //This number sets the speed of the code
ProcessKeyTimer<-null;
}
function onPlayerPart(player,reason)
{
DeleteAllPlayerKeyToTable(player.ID);
}
function onKeyDown(player,key)
{
AddPlayerKeyToTable(player.ID,key);
}
function onKeyUp(player,key)
{
DeletePlayerKeyToTable(player.ID,key);
}
//Functions
function AddKeyToTable(key)
{
ProcessKey.rawset(key,key);
}
function DeleteKeyToTable(key)
{
if(ProcessKey.rawin(key)) ProcessKey.rawdelete(key);
}
function AddPlayerKeyToTable(i,key)
{
local plr=FindPlayer(i);
if(plr)
{
if(ProcessKey.rawin(key))
{
if(PlayerKeys.rawin(plr.ID))
{
local arr=PlayerKeys.rawget(plr.ID),find=false;
for(i=0;i<arr.len();i++)
{
if(arr[i]==key)
{
find=true;
break;
}
}
if(find==false) arr.append(key);
}
else
{
local arr=[];
arr.append(key);
PlayerKeys.rawset(plr.ID,arr);
}
CreateProcessKeyTimer();
}
}
}
function DeletePlayerKeyToTable(i,key)
{
local plr=FindPlayer(i);
if(plr)
{
if(ProcessKey.rawin(key))
{
if(PlayerKeys.rawin(plr.ID))
{
local arr=PlayerKeys.rawget(plr.ID);
for(local i=0;i<arr.len();i++)
{
if(arr[i]==key)
{
arr.remove(i);
break;
}
}
if(arr.len()==0) PlayerKeys.rawdelete(plr.ID);
}
if(PlayerKeys.len()==0) DeleteProcessKeyTimer();
}
}
}
function DeleteAllPlayerKeyToTable(i)
{
local plr=FindPlayer(i);
if(plr)
{
if(PlayerKeys.rawin(plr.ID)) PlayerKeys.rawdelete(plr.ID);
}
}
function CreateProcessKeyTimer()
{
if(ProcessKeyTimer==null) ProcessKeyTimer=NewTimer("onServerKeyProcess",ProcessKeyTime,0);
}
function DeleteProcessKeyTimer()
{
if(ProcessKeyTimer!=null) ProcessKeyTimer.Delete();
ProcessKeyTimer=null;
}
function onServerKeyProcess()
{
for(local i=0;i<100;i++)
{
local plr=FindPlayer(i);
if(plr)
{
if(PlayerKeys.rawin(plr.ID))
{
local arr=PlayerKeys.rawget(plr.ID);
for(local i=0;i<arr.len();i++) onKeyDown(plr,arr[i]);
}
}
}
}
function onScriptLoad()
{
Key_J<-BindKey(true,0x4A,0,0);
Key_L<-BindKey(true,0x4C,0,0);
Key_I<-BindKey(true,0x49,0,0);
Key_K<-BindKey(true,0x4B,0,0);
AddKeyToTable(Key_I); //Adds the binding key to the table that is looped
AddKeyToTable(Key_K);
ProcessKeyTime=10;
}
function onKeyDown(player,key)
{
if(key==Key_I) player.Pos.z+=1;
if(key==Key_K) player.Pos.z-=1;
if(key==Key_J) MessagePlayer("[#FFFF00]Key: J",player);
if(key==Key_L) MessagePlayer("[#FFFF00]Key: L",player);
}
Quote from: gamingpro on Jan 28, 2024, 07:54 AMHey, just add announce plugin in server.cfgHi bro, Can you tell me how you port forward please ?, because i try it but not success please tell me, Are port forward show server in masterlist or not ?
function onKeyDown(player,key) //Now only KL can trigger the loop execution
{
if(key==Key_I)
{
Message("Key: I");
}
if(key==Key_J)
{
Message("Key: J");
}
if(key==Key_K)
{
Message("Key: K");
AddKeyTable(player.ID,key);
}
if(key==Key_L)
{
Message("Key: L");
AddKeyTable(player.ID,key);
}
}