0 Members and 1 Guest are viewing this topic.
const//TeamsALPHA = 1;BRAVO = 2;CHARLIE = 3;DELTA = 4;SPECTATOR = 5;HP_PER_LEVEL = 200;MAX_LVL = 10;EP_PER_LEVEL = 100;//Game ModesDEATHMATCH = 0;POINTMATCH = 1;TEAMMATCH = 2;CTF = 3;RAMBO = 4;INF = 5;HTF = 6;SERVER = 255;type tplayer = record name: string; ep,level,maxhp: integer; end;var soldier: array[1..32] of tplayer;function GetEP(Killer,Victim:string): integer;var KID,VID,multiplier,lvldif,EP: integer;begin KID:=NametoID(Killer); VID:=NametoID(Victim); lvldif:=soldier[VID].level-soldier[KID].level; multiplier:=100 + 10 * lvldif; If multiplier<40 then multiplier:=40; EP:=1000 + (soldier[VID].level * EP_PER_LEVEL * multiplier DIV 100); Result:=EP;end;function MaxEP(ID: integer): integer;begin Result:=2200 + (soldier[ID].level * 2000) + (soldier[ID].level * soldier[ID].level * 200);end;{procedure Heal(ID,percent,absolute: intteger);begin DoDamage(ID,(-1) * soldier.[ID].maxhp * percentage DIV 100 - absolute);end;} procedure GainLvl(ID: integer);begin soldier[ID].level:=soldier[ID].level+1; Command('say ' + IDtoName(ID) + ' reached Level ' + inttostr(soldier[ID].level)); soldier[ID].maxhp:=4000 + HP_PER_LEVEL * soldier[ID].level; //Heal(ID,100,0);end;procedure ActivateServer();beginend;procedure AppOnIdle(Ticks: integer);beginend;procedure OnCommand(ID: integer;Text: string);beginend;function OnRequestGame(IP: string;State: integer):integer;beginResult := State;end;procedure OnJoinGame(IP, Nickname: string;Team: byte);beginend;procedure OnJoinTeam(IP, Nickname: string;Team: byte);var JID: integer;begin JID:=IPtoID(IP); soldier[JID].level:=0; soldier[JID].ep:=0; soldier[JID].maxhp:=4000; soldier[JID].name:=Nickname;end;procedure OnLeaveGame(IP, Nickname: string;Team: byte);beginend;procedure OnFlagGrab(ID: integer;TeamFlag: byte;GrabbedInBase: boolean);beginend;procedure OnFlagReturn(ID: integer;TeamFlag: byte);beginend;procedure OnFlagScore(ID: integer;TeamFlag: byte);beginend;procedure OnPlayerKill(Killer,Victim,Weapon: string);var EP,KID,VID: integer;begin KID:=NametoID(Killer); VID:=NametoID(Victim); If KID=VID then begin If soldier[KID].ep > 1000 + soldier[KID].level * EP_PER_LEVEL then soldier[KID].ep:=soldier[KID].ep - (1000 + soldier[KID].level * EP_PER_LEVEL) else soldier[KID].ep:=0; end else begin EP:=GetEP(Killer,Victim); soldier[KID].ep:=soldier[KID].ep + EP; If soldier[KID].ep >= MaxEP(KID) then begin If soldier[KID].level >= MAX_LVL then else GainLvl(KID); end; end; end;procedure OnPlayerRespawn(ID: integer);beginend;procedure OnPlayerSpeak(Name,Text: string);beginend;procedure OnAdminConnect(IP: string);beginend;procedure OnAdminDisconnect(IP: string);beginend;procedure OnAdminMessage(IP, Msg: string);beginend;
but you can make summon spells for example that summon like a couple of boogie men that guard your base for let's say 10 seconds.
Someone who joins in the middle of a map, at a server running this script, will have no change. Did you think about it ?
procedure OnJoinTeam(IP, Nickname: string;Team: byte);var JID: integer;begin JID:=IPtoID(IP); soldier[JID].level:=0; soldier[JID].ep:=0; soldier[JID].maxhp:=4000; soldier[JID].name:=Nickname;end;
ya well he will start start at lvl 0, and he'll suck for the duration of that round... i could implement some algorithm that makes him start with the lowest level among the other players, starting at that level with 0 Ep. that'd fix it a bit thanks for reminding me of that.
procedure OnJoinTeam(IP, Nickname: string;Team: byte);var i,JID,temp: integer;begin temp:=0; JID:=IPtoID(IP); soldier[JID].level:=1; If NumPlayers > 1 then begin for i:=1 to 32 do If soldier[i].level > temp then temp:=soldier[i].level; soldier[JID].level:=temp; end; soldier[JID].ep:=0; soldier[JID].maxhp:=4000; soldier[JID].name:=Nickname;end;
you can't do anything classic, like a fireball, but you can make summon spells for example that summon like a couple of boogie men that guard your base for let's say 10 seconds. it'll be a new and unique expirience imo.i also tried scripting "evolvable" weapons, but that requires to load different weapon.inis, and everytime you change the ini to load a weapon for a guy that reached a new level, everyone and not only that one person will get the gun. that's a so far unsolvable problem and improvable weapons will therefore not be implemented
I think this would be cool for a singleplayer game. Could you like , deny the usage of an X weapon till you're X level. This would be really useful for spells and such.
GetPlayerXY(caster,X1,Y1); temp:=999999; nearest:=0; for i:=1 to 32 do If i<>caster then begin GetPlayerXY(i,X2,Y2); If (X2<>0) and (Y2<>0) {and GetPlayerStat(i,'Alive')} then begin temp2:=sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)); If temp2 < temp then begin temp:=temp2; nearest:=i; end; end; end;
---Conjure Clip---Category: Offensive, Spell ('/ofs')
const//TeamsALPHA = 1;BRAVO = 2;CHARLIE = 3;DELTA = 4;SPECTATOR = 5;HP_PER_LEVEL = 200;MAX_LVL = 10;EP_PER_LEVEL = 100;//Game ModesDEATHMATCH = 0;POINTMATCH = 1;TEAMMATCH = 2;CTF = 3;RAMBO = 4;INF = 5;HTF = 6;//Weapons DEAGLES = 1; HKMP5 = 2; AK74 = 3; STEYR = 4; SPAS = 5; RUGER = 6; M79 = 7; BARRET = 8; MINIMI = 9; MINIGUN = 10; FLAMER = 11; BOW = 12; FLAMEBOW = 13; SOCOM = 0; KNIFE = 14; CHAINSAW = 15; LAW = 16;SERVER =255 ;type tplayer = record name: string; ep,level,maxhp: integer; end;var soldier: array[1..32] of tplayer;function GetEP(Killer,Victim:string): integer;var KID,VID,multiplier,lvldif,EP: integer;begin KID:=NametoID(Killer); VID:=NametoID(Victim); lvldif:=soldier[VID].level-soldier[KID].level; multiplier:=100 + 10 * lvldif; If multiplier<40 then multiplier:=40; EP:=1000 + (soldier[VID].level * EP_PER_LEVEL * multiplier DIV 100); Result:=EP;end;function MaxEP(ID: integer): integer;begin Result:=2200 + (soldier[ID].level * 2000) + (soldier[ID].level * soldier[ID].level * 200);end;{procedure Heal(ID,percent,absolute: intteger);begin DoDamage(ID,(-1) * soldier.[ID].maxhp * percentage DIV 100 - absolute);end;} procedure GainLvl(ID: integer);begin soldier[ID].level:=soldier[ID].level+1; Command('say ' + IDtoName(ID) + ' reached Level ' + inttostr(soldier[ID].level)); soldier[ID].maxhp:=4000 + HP_PER_LEVEL * soldier[ID].level; //Heal(ID,100,0);end;procedure ActivateServer();beginend;procedure AppOnIdle(Ticks: integer);beginend;procedure OnCommand(ID: integer;Text: string);beginend;function OnRequestGame(IP: string;State: integer):integer;beginResult := State;end;procedure OnJoinGame(IP, Nickname: string;Team: byte);beginend;procedure OnJoinTeam(IP, Nickname: string;Team: byte);var i,JID,temp: integer;begin temp:=0; JID:=IPtoID(IP); soldier[JID].level:=1; If NumPlayers > 1 then begin for i:=1 to 32 do If soldier[i].level > temp then temp:=soldier[i].level; soldier[JID].level:=temp; end; soldier[JID].ep:=1; soldier[JID].maxhp:=4000; soldier[JID].name:=nickname;end;procedure OnLeaveGame(IP, Nickname: string;Team: byte);beginend;procedure OnFlagGrab(ID: integer;TeamFlag: byte;GrabbedInBase: boolean);beginend;procedure OnFlagReturn(ID: integer;TeamFlag: byte);beginend;procedure OnFlagScore(ID: integer;TeamFlag: byte);beginend;procedure OnPlayerKill(Killer,Victim,Weapon: string);var EP,KID,VID: integer;begin KID:=NametoID(Killer); VID:=NametoID(Victim); If KID=VID then begin If soldier[KID].ep > 1000 + soldier[KID].level * EP_PER_LEVEL then soldier[KID].ep:=soldier[KID].ep - (1000 + soldier[KID].level * EP_PER_LEVEL) else soldier[KID].ep:=0; end else begin EP:=GetEP(Killer,Victim); soldier[KID].ep:=soldier[KID].ep + EP; If soldier[KID].ep >= MaxEP(KID) then begin If soldier[KID].level >= MAX_LVL then else GainLvl(KID); end; end; end;procedure OnPlayerRespawn(ID: integer);beginend;procedure OnPlayerSpeak(Name,Text: string);beginend;procedure OnAdminConnect(IP: string);beginend;procedure OnAdminDisconnect(IP: string);beginend;procedure OnAdminMessage(IP, Msg: string);beginend;procedure OnException(ErrorMessage: string);begin// WriteFile('ErrorLog.txt', ErrorMessage);end;function OnPlayerCommand(ID: Byte; Text: string): boolean;begin //NOTE: This function will be called when [_ANY_] player types a / command. Result := false; //Return true if you want disable the command typed.end;procedure OnWeaponChange(ID, PrimaryNum, SecondaryNum: byte);beginend;function OnPlayerDamage(Victim, Shooter: byte; Damage: integer): integer;begin // Victim = Player Damaged // Shooter = Player doing the damage result := Damage;end;
My new password is secure as shit Mate, I am not sure Shit is even secured nowadays.