PDA

View Full Version : 2 scripts , one file ?



suck000
26th March 2016, 20:29
Hi all , i got a !kick command that is working fine. I wanted to add a !vote command https://killtube.org/showthread.php?2485-Call-a-vote , but both of them uses callbacksetup.

My question is , how to make !vote command works while there is another command in _callbacksetup.gsc.

Thanks :)

suck000
26th March 2016, 20:42
Bump :p
10char

suck000
26th March 2016, 20:55
Bump (x2) AM NOT SPAMMING
215 chars.

voron00
26th March 2016, 20:56
http://lmgtfy.com/?q=how+to+use+C+switch+operator

suck000
26th March 2016, 21:17
did not understand anything. Explain me how to do this.

IzNoGoD
26th March 2016, 21:46
Step 1: Dont bump your own thread twice in 30 minutes, it will NOT help. The only thing you did was bump it OVER your other thread, which was last replied to by... you.

Step 2: learn how to code. Seriously.

suck000
26th March 2016, 21:52
Am trying man! I just need a help. How to do this. Please

IzNoGoD
26th March 2016, 23:56
http://lmgtfy.com/?q=how+to+use+C+switch+operator

This is everything you need.

suck000
27th March 2016, 06:50
I tried to understand , i made everything in tutorials. I did not understand anything Please am fucking rekt ! fffffffffffffffssssssssssssssssssssssss
Kick command :

// Callback Setup
// This script provides the hooks from code into script for the gametype callback functions.

//================================================== ===========================
// Code Callback functions

/*================
Called by code after the level's main script function has run.
================*/
CodeCallback_StartGameType()
{
// If the gametype has not beed started, run the startup
if(!isDefined(level.gametypestarted) || !level.gametypestarted)
{

// -- Added by DaMole --
svr\bash::init();
// --


[[level.callbackStartGameType]]();

level.gametypestarted = true; // so we know that the gametype has been started up
}
}

/*================
Called when a player begins connecting to the server.
Called again for every map change or tournement restart.

Return undefined if the client should be allowed, otherwise return
a string with the reason for denial.

Otherwise, the client will be sent the current gamestate
and will eventually get to ClientBegin.

firstTime will be qtrue the very first time a client connects
to the server machine, but qfalse on map changes and tournement
restarts.
================*/
CodeCallback_PlayerConnect()
{
self endon("disconnect");
[[level.callbackPlayerConnect]]();
}

/*================
Called when a player drops from the server.
Will not be called between levels.
self is the player that is disconnecting.
================*/
CodeCallback_PlayerDisconnect()
{
self notify("disconnect");
[[level.callbackPlayerDisconnect]]();
}

/*================
Called when a player has taken damage.
self is the player that took damage.
================*/
CodeCallback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset)
{
self endon("disconnect");
[[level.callbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
}

/*================
Called when a player has been killed.
self is the player that was killed.
================*/
CodeCallback_PlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
{
self endon("disconnect");
[[level.callbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
}

//================================================== ===========================

/*================
Setup any misc callbacks stuff like defines and default callbacks
================*/
SetupCallbacks()
{
SetDefaultCallbacks();

// Set defined for damage flags used in the playerDamage callback
level.iDFLAGS_RADIUS = 1;
level.iDFLAGS_NO_ARMOR = 2;
level.iDFLAGS_NO_KNOCKBACK = 4;
level.iDFLAGS_NO_TEAM_PROTECTION = 8;
level.iDFLAGS_NO_PROTECTION = 16;
level.iDFLAGS_PASSTHRU = 32;
}

/*================
Called from the gametype script to store off the default callback functions.
This allows the callbacks to be overridden by level script, but not lost.
================*/
SetDefaultCallbacks()
{
level.default_CallbackStartGameType = level.callbackStartGameType;
level.default_CallbackPlayerConnect = level.callbackPlayerConnect;
level.default_CallbackPlayerDisconnect = level.callbackPlayerDisconnect;
level.default_CallbackPlayerDamage = level.callbackPlayerDamage;
level.default_CallbackPlayerKilled = level.callbackPlayerKilled;
}

/*================
Called when a gametype is not supported.
================*/
AbortLevel()
{
println("Aborting level - gametype is not supported");

level.callbackStartGameType = ::callbackVoid;
level.callbackPlayerConnect = ::callbackVoid;
level.callbackPlayerDisconnect = ::callbackVoid;
level.callbackPlayerDamage = ::callbackVoid;
level.callbackPlayerKilled = ::callbackVoid;

setcvar("g_gametype", "dm");

exitLevel(false);
}

/*================
================*/
callbackVoid()
{
}


fixChatArgs(args)
{
if (isDefined(args[1])) { // engine is adding identifier infront of the chat message
if (getAscii(args[1][0]) >= 20 && getAscii(args[1][0]) <= 22) {
args[1] = getSubStr(args[1], 1);
newArgs = strTok(args[1], " ");
for (i=0; i<newArgs.size; i++)
args[1+i] = newArgs[i];
}
}
return args;
}


checkIfExist(number)
{
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
if(players[i] getentitynumber() == Int(number))
return true;
}
return false;
}

thirdArgument(args)
{
text = "";
for(i=3; i<args.size; i++)
text += args[i] + " ";
return text;
}

getPlayerNameById(number)
{
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
if(players[i] getentitynumber() == Int(number))
return players[i].name;
}
return false;
}

getPlayerById(number)
{
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
if(players[i] getEntityNumber() == Int(number))
return players[i];
}
return false;
}

tellMessage(message)
{
sendgameservercommand(self getentitynumber(), "h \"^7console: ^7" + message + "\"");
}


tellMessageWorld(message)
{
sendgameservercommand(-1, "h \"^7console: ^7" + message + "\"");
}

isint(string)
{
return ((int(string) + "") == string + "");
}


CodeCallback_PlayerCommand(args)
{
output = "";
for (i=0; i<args.size; i++)
output += args[i] + ", ";

args = fixChatArgs(args);


if (args[0] == "say" && isDefined(args[1]) && args[1][0] == "!")
{
switch (getSubStr(args[1], 1))
{
case "kick":
if(self getGUID() == 706687)
{
if (isDefined(args[2]) && isint(args[2]) && isDefined(args[3]))
{
args[2] = int(args[2]);
if(!checkIfExist(args[2]))
{
self thread tellMessage("Couldn\'t find a player with this number.");
return;
}
args[3] = thirdArgument(args);
kickmsg = "You were kicked, because of reason: " + args[3];
tokickname = getPlayerNameById(args[2]);
thread tellMessageWorld(tokickname + " ^7was kicked. Reason: " + args[3]);
kick2(args[2], kickmsg);
return;
}
else
{
self thread tellMessage("Noone to kick, or no reason typed ._.");
return;
}
}
else
{
self thread tellMessage("You are not an admin.");
return;
}
}
}

self ClientCommand();
}

Vote command :

fixChatArgs(args)
{
if (isDefined(args[1]))
{ // engine is adding identifier infront of the chat message
if (getAscii(args[1][0]) >= 20 && getAscii(args[1][0]) <= 22)
{
//std\io::print("delete bad ascii code: " + std\utils::getAscii(args[1][0]) + "\n");
args[1] = getSubStr(args[1], 1);
newArgs = strTok(args[1], " ");
for (i = 0; i < newArgs.size; i++)
args[1 + i] = newArgs[i];
}
}
return args;
}
CodeCallback_PlayerCommand(args)
{
command = "";
output = "";
for (i = 0; i < args.size; i++)
output += args[i] + ", ";

//std\io::print("PLAYER COMMAND! message: " + output + "\n");
args = fixChatArgs(args);

if (args[0] == "say" && isDefined(args[1]) && args[1][0] == "!" || args[0] == "say_team" && isDefined(args[1]) && args[1][0] == "!")
{
switch (getSubStr(args[1], 1))
{
case "vote":
if(isdefined(level.pers["voted"]) && level.pers["voted"] == 1)
{
self iprintlnbold("Already a vote running");
return;
}
time =0;
level.pers["voted"] = 1;
level.pers["votesyes"]=0;
level.pers["votesno"]=0;
if(isint(args[args.size-1]))
{
time = int(args[args.size-1]);
level.definetime = 1;
//iprintlnbold("time: "+time);
}
else
{
//iprintlnbold("no time, time set to 20");
time =20;
level.definetime = 0;
}
question = "";
if(isdefined(level.definetime) && level.definetime == 1)
{
for (i = 2; i < args.size-1; i++)
question += args[i] + " ";
}
else
{
for (i = 2; i < args.size; i++)
question += args[i] + " ";
}

iprintlnbold("^1Question^7: "+question);
iprintlnbold("Use !yes and !no to vote");

thread maketimer(time);
wait time;
iprintlnbold("Counting Votes");
wait 1;
iprintlnbold("Votes ^2Yes^7: "+ level.pers["votesyes"]);
iprintlnbold("Votes ^1No^7: "+ level.pers["votesno"]);

level.pers["voted"] = 0;
players = getentarray("player", "classname");
for (i = 0; i < players.size; i++)
{
players[i].pers["hasvoted"]=0;
}

return;

case "yes":
if(!isdefined(level.pers["voted"]) || level.pers["voted"] == 0)
{
self iprintlnbold("No vote running");
return;
}
if(isdefined(self.pers["hasvoted"]) && self.pers["hasvoted"] == 1)
{
self iprintlnbold("Already voted");
return;
}
level.pers["votesyes"] ++;
self.pers["hasvoted"]=1;
self iprintlnbold("You voted: ^2Yes");
return;

case "no":
if(!isdefined(level.pers["voted"]) || level.pers["voted"] == 0)
{
self iprintlnbold("No vote running");
return;
}
if(isdefined(self.pers["hasvoted"]) && self.pers["hasvoted"] == 1)
{
self iprintlnbold("Already voted");
return;
}
level.pers["votesno"] ++;
self iprintlnbold("You voted: ^1No");
return;
}
}

self ClientCommand();


}

suck000
27th March 2016, 10:46
Help :confused:

IzNoGoD
27th March 2016, 11:36
Print out both pieces of script. Highlight stuff thats identical in both. Work from there.