Results 1 to 3 of 3

Thread: Call a vote

  1. #1
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts

    Call a vote

    This is a very simple code to ask a question and see the result. You can improve it with some nice huds.
    Libcod needed

    Code:
    			   	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;
    Code:
    maketimer(time)
    {
    	if(isDefined(level.timer))
    		level.timer destroy();
    	if(!isDefined(level.timer))
    	{
    		level.timer = newHudElem();
    		level.timer.x = 6;
    		level.timer.y = 76;
    		level.timer.horzAlign = "left";
    		level.timer.vertAlign = "top";
    		level.timer.fontscale = 1.5;
    		level.timer.label = &"^1Vote Time: ^3";
    		level.timer setTenthsTimer(time); 
    	}
    	wait time;
    	if(isDefined(level.timer))
    		level.timer destroy();
    }
    Code:
    isint(string)
    {
         return ((int(string) + "") == string + "");
    }
    Dont forget to precache
    Code:
    &"^1Vote Time: ^3";

  2. The Following 3 Users Say Thank You to Ni3ls For This Useful Post:

    suck000 (17th March 2016),thOuMta (30th December 2015),Whiskas (6th March 2016)

  3. #2
    ... connecting
    Join Date
    Jan 2013
    Posts
    7
    Thanks
    0
    Thanked 8 Times in 3 Posts
    I see nothing related to libcod, all of this can be done in vanilla cod(2).

    Also I am missing completion, this is just a code snippet (part).
    You cannot start a script with a 'case' statement.

  4. The Following User Says Thank You to Selbie For This Useful Post:

    kung foo man (31st December 2015)

  5. #3
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    Here you go
    Code:
    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();
    
    
    }

  6. The Following 3 Users Say Thank You to Ni3ls For This Useful Post:

    kung foo man (31st December 2015),suck000 (17th March 2016),Whiskas (6th March 2016)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •