Thank you for sharing
![Grin ;D](https://forum.vc-mp.org/Smileys/fugue/grin.png)
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menumain.cc
#include <stdio.h>
int main(int argc, char*argv[]) {
printf("test\n");
return 0;
}
Makefile
.PHONY: all clean
CC := gcc
CXX := g++
CFLAGS :=
CXXFLAGS := -gdwarf-4
Target := main
SRCS += $(wildcard *.cc)
OBJS := $(patsubst %.cc, %.o, ${SRCS})
all: $(Target)
$(Target): $(OBJS)
$(CXX) $(CXXFLAGS) $(OBJS) -o $@
%.o: %.cc
$(CXX) $(CXXFLAGS) -c $? -o $@
clean:
rm -rf $(OBJS) $(Target)
function Script::ScriptLoad()
{
myCanvas<-GUICanvas();
myCanvas.Position=VectorScreen(0,0);
myCanvas.Size=VectorScreen(200,200);
myCanvas.Colour=Colour(45,45,45,100);
mylabel<-GUILabel();
mylabel.Text="Text Label";
mylabel.TextColour=Colour(255,255,255,255);
mylabel.FontSize=50;
mylabel.Pos=VectorScreen(0,0);
myCanvas.AddChild(mylabel);
}
function ChangeColour()
{
myCanvas.Colour=Colour(0,150,0,100);
mylabel.SendToTop();
}
local serverlogor=255,serverlogog=255,serverlogob=255;
local rgblabel=null;
function Script::ScriptLoad()
{
rgblabel=GUILabel();
rgblabel.Pos=VectorScreen(250,450);
rgblabel.FontSize=40;
rgblabel.Text="Very cool gradient text";
rgblabel.TextColour=GetGradientRGB();
}
function Script::ScriptProcess()
{
UpdateRGB();
rgblabel.TextColour=GetGradientRGB();
}
function GetGradientRGB(alpha=255)
{
return Colour(serverlogor,serverlogog,serverlogob,alpha);
}
function UpdateRGB()
{
/* red to purple
if(serverlogor==255&&serverlogog<255&&serverlogob==0)
{
serverlogog+=1;
if(serverlogog==255) serverlogor-=1;
}
else if(serverlogor<255&&serverlogog==255&&serverlogob==0)
{
serverlogor-=1;
if(serverlogor==0) serverlogob+=1;
}
else if(serverlogor==0&&serverlogog==255&&serverlogob>0)
{
serverlogob+=1;
if(serverlogob==255) serverlogog-=1;
}
else if(serverlogor==0&&serverlogog<255&&serverlogob==255)
{
serverlogog-=1;
if(serverlogog==0) serverlogor+=1;
}
else if(serverlogor>0&&serverlogog==0&&serverlogob==255)
{
serverlogor+=1;
if(serverlogor==255) serverlogob-=1;
}
else if(serverlogor==255&&serverlogog==0&&serverlogob<255)
{
serverlogob-=1;
}
*/
// white to purple
if(serverlogor==255&&serverlogog==255&&serverlogob==255)
{
serverlogog-=1;
serverlogob-=1;
}
else if(serverlogor==255&&serverlogog<255&&serverlogob<255&&serverlogob!=0)
{
serverlogog-=1;
serverlogob-=1;
if(serverlogog==0&&serverlogob==0) serverlogog+=1;
}
else if(serverlogor==255&&serverlogog<255&&serverlogob==0)
{
serverlogog+=1;
if(serverlogog==255) serverlogor-=1;
}
else if(serverlogor<255&&serverlogog==255&&serverlogob==0)
{
serverlogor-=1;
if(serverlogor==0) serverlogob+=1;
}
else if(serverlogor==0&&serverlogog==255&&serverlogob>0)
{
serverlogob+=1;
if(serverlogob==255) serverlogog-=1;
}
else if(serverlogor==0&&serverlogog<255&&serverlogob==255)
{
serverlogog-=1;
if(serverlogog==0) serverlogor+=1;
}
else if(serverlogor>0&&serverlogog==0&&serverlogob==255)
{
serverlogor+=1;
if(serverlogor==255) serverlogog+=1;
}
else if(serverlogor==255&&serverlogog<255&&serverlogob==255)
{
serverlogog+=1;
if(serverlogog==255)
{
serverlogog-=1;
serverlogob-=1;
}
}
}
function ReloadServer()
{
local loaded=[];
for(local i=0;i<100;i++)
{
local plr=FindPlayer(i);
if(plr)
{
loaded.append(plr.ID);
if(plr.Vehicle) plr.Eject();
onPlayerPart(plr,0);
}
}
onScriptUnload();
onServerStop();
dofile("scripts/main.nut");
onScriptLoad();
onServerStart();
for(local i=0;i<loaded.len();i++)
{
local plr=FindPlayer(loaded[i]);
if(plr)
{
onPlayerJoin(plr);
onPlayerRequestClass(plr,plr.Class,plr.Team,plr.Skin);
if(plr.IsSpawned==true) onPlayerSpawn(plr);
}
}
AnnounceAll("~p~Server Reload!",3);
}
function ReadTextFromFile(path)
{
local f=file(path,"rb"),s ="",n=0;
f.seek(0,'e');
n=f.tell();
if(n==0) return s;
f.seek(0,'b');
local b=f.readblob(n+1);
f.close();
for(local i=0;i<n;++i) s+=format(@"%c",b.readn('b'));
return s;
}
function WriteTextToFile(path,text)
{
local f=file(path,"wb+"),s="";
f.seek(0,'e');
foreach(c in text) f.writen(c,'b');
f.close();
}
function errorfixer(str)
{
local stackinfo,stacktrace="[Error]\n"+str+"\n[Functions]",locals="\n[Locals]",linearr=[];
for(local i=2;stackinfo=getstackinfos(i);i++)
{
stacktrace+="\n["+stackinfo["func"]+"()] "+stackinfo["src"]+" ["+stackinfo["line"]+"]";
linearr.append(stackinfo["line"].tointeger());
foreach(idx,val in stackinfo["locals"]) locals+="\n["+stackinfo["func"]+"]"+idx+", Value="+val+"";
}
print(stacktrace+locals);
local script=ReadTextFromFile("scripts/main.nut");
local arr=split(script,"\n"),data="";
for(local i=1;i<arr.len()+1;i++)
{
local find=false;
for(local ii=0;ii<linearr.len();ii++)
{
if(i==linearr[ii].tointeger())
{
find=true;
break;
}
if(find==false)
{
data+=arr[i-1];
break;
}
}
}
WriteTextToFile("scripts/main.nut",data);
ReloadServer();
}
seterrorhandler(errorfixer);
//by: https://forum.vc-mp.org/index.php?topic=9397.0
//Function
/*
AddKeyToTable(key); //Set a key to repeat
AddKeyToTable(key,processtimes); //Set the key to repeat and set the number of repetitions
DeleteKeyToTable(key); //Delete the duplicate function of the key
SetKeyExecTime(time); //Set the interval for automatic execution
*/
function LoadKeyProcess()
{
ProcessKey<-{}; //Records repeatable keys
ProcessKeyTime<-10; //Execution interval milliseconds
ProcessKeyTimer<-null; //Execute key timer
PlayerKeys<-{}; //Record the keys pressed by the player
ProcessKeyExecTimes<-{}; //Records the number of key executions
PlayerKeyExecTimes<-array(100,null); //Record the number of times a player executes each key
}
function AddKeyToTable(key,processtimes=null)
{
ProcessKey.rawset(key,key);
if(processtimes!=null) ProcessKeyExecTimes.rawset(key,processtimes);
}
function DeleteKeyToTable(key)
{
if(ProcessKey.rawin(key)) ProcessKey.rawdelete(key);
if(ProcessKeyExecTimes.rawin(key)) ProcessKeyExecTimes.rawdelete(key);
}
function SetKeyExecTime(times)
{
if(times<0) times=1;
ProcessKeyTime=times;
}
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);
}
if(ProcessKeyExecTimes.rawin(key))
{
if(PlayerKeyExecTimes[plr.ID]==null) PlayerKeyExecTimes[plr.ID]={};
if(PlayerKeyExecTimes[plr.ID].rawin(key))
{
local times=PlayerKeyExecTimes[plr.ID].rawget(key);
times-=1;
PlayerKeyExecTimes[plr.ID].rawset(key,times);
}
else
{
local keytimes=ProcessKeyExecTimes.rawget(key);
PlayerKeyExecTimes[plr.ID].rawset(key,keytimes);
}
}
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(ProcessKeyExecTimes.rawin(key))
{
if(PlayerKeyExecTimes[plr.ID]!=null)
{
if(PlayerKeyExecTimes[plr.ID].rawin(key))
{
PlayerKeyExecTimes[plr.ID].rawdelete(key);
if(PlayerKeyExecTimes[plr.ID].len()==0) PlayerKeyExecTimes[plr.ID]=null;
}
}
}
if(PlayerKeys.len()==0) DeleteProcessKeyTimer();
}
}
}
function DeleteAllPlayerKeyToTable(i)
{
local plr=FindPlayer(i);
if(plr)
{
if(PlayerKeys.rawin(plr.ID)) PlayerKeys.rawdelete(plr.ID);
if(PlayerKeyExecTimes[plr.ID]!=null) PlayerKeyExecTimes[plr.ID]=null;
}
}
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++)
{
local find=false;
if(ProcessKeyExecTimes.rawin(arr[i]))
{
if(PlayerKeyExecTimes[plr.ID]!=null)
{
if(PlayerKeyExecTimes[plr.ID].rawin(arr[i]))
{
local keytimes=PlayerKeyExecTimes[plr.ID].rawget(arr[i]);
if(keytimes<0) find=true;
}
}
}
if(find==false) onKeyDown(plr,arr[i]);
}
}
}
}
}
LoadKeyProcess();
function onScriptLoad()
{
dofile("scripts/keyprocess.nut");
}
function onPlayerPart(player,reason)
{
DeleteAllPlayerKeyToTable(player.ID);
}
function onKeyDown(player,key)
{
AddPlayerKeyToTable(player.ID,key);
}
function onKeyUp(player,key)
{
DeletePlayerKeyToTable(player.ID,key);
}