SA-MP Forums Archive
Голосование - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Голосование (/showthread.php?tid=469882)



Голосование - Nikid - 15.10.2013

PHP код:
#define MAX_MAP 300
    
if(!strcmp(cmdtext,"/base",true,5))
    {
        new 
string[255];
        if(
Player[playerid][pTeam] != T_DEFSendClientMessage(playeridCOLOR_GREY"* Äàííîå ãîëîñîâàíèå òîëüêî äëÿ çàùèòíèêîâ");
        else if(
Current != -1SendClientMessage(playeridCOLOR_GREY"* Èãðà íà áàçå óæå íà÷àëàñü, âû íå ìîæåòå ãîëîñîâàòü â äàííûé ìîìåíò.");
        else if(!
strlen(cmdtext[6])) SendClientMessage(playeridCOLOR_GREY" Èñïîëüçóéòå: /base [baseid]");
        else {
            new 
baseid strval(cmdtext[6]);
            if(
baseid >= MAX_MAPSendClientMessage(playeridCOLOR_GREY" Äàííàÿ áàçà íå ñóùåñòâóåò, ââåäèòå /bases äëÿ ïðîñìîòðà ñïèñêà áàç.");
            else if(
BaseFile[baseid]) SendClientMessage(playeridCOLOR_GREY" Äàííàÿ áàçà íå ñóùåñòâóåò, ââåäèòå /bases äëÿ ïðîñìîòðà ñïèñêà áàç.");
            else {
                
Votes2[baseid] = Votes2[baseid] +1;
                
Player[playerid][pVoted] = true;
                
format(string,255,"%s ãîëîñîâàë çà áàçó #%d"Playername(playerid), baseid);
                
SendClientMessageToAll(COLOR_YELLOWstring);
                 if(!
Voting)
                {
                    
Voting true;
                    new 
i;
                    while((
MAX_MAP) || (MAX_PLAYERS))
                    {
                        if(
MAX_MAPVotes2[i] = 0;
                        if(
MAX_PLAYERSPlayer[i][pVoted] = false;
                        
i++;
                    }
                    
VotingTime 20;
                    
VoteMove();
                }
            }
        }
        return 
1;
    }
    if(!
strcmp(cmdtext,"/arena",true,6))
    {
        new 
string[255];
        if(
Current != -1SendClientMessage(playeridCOLOR_GREY"* Èãðà íà àðåíå óæå íà÷àëàñü, âû íå ìîæåòå ãîëîñîâàòü â äàííûé ìîìåíò.");
        else if(!
strlen(cmdtext[7])) SendClientMessage(playeridCOLOR_GREY" Èñïîëüçóéòå: /arena [arenaid]");
        else {
            new 
arenaid strval(cmdtext[7]);
            if(
arenaid >= MAX_MAPSendClientMessage(playeridCOLOR_GREY" Äàííîé àðåíû íå ñóùåñòâóåò, ââåäèòå /arenas äëÿ ïðîñìîòðà ñïèñêà àðåí");
            else if(!
ArenFile[arenaid]) SendClientMessage(playeridCOLOR_GREY" Äàííîé àðåíû íå ñóùåñòâóåò, ââåäèòå /arenas äëÿ ïðîñìîòðà ñïèñêà àðåí");
            else {
                
Votes[arenaid] = Votes[arenaid] +1;
                
Player[playerid][pVoted] = true;
                
format(string,255,"%s ïðîãîëîñîâàë çà àðåíó #%d"Playername(playerid), arenaid);
                
SendClientMessageToAll(COLOR_YELLOWstring);
                 if(!
Voting)
                {
                    
Voting true;
                    new 
i;
                    while((
MAX_MAP) || (MAX_PLAYERS))
                    {
                        if(
MAX_MAPVotes[i] = 0;
                        if(
MAX_PLAYERSPlayer[i][pVoted] = false;
                        
i++;
                    }
                    
VotingTime 20;
                    
VoteMove();
                }
            }
        }
        return 
1;
    }
forward VoteMove();
public 
VoteMove()
{
    if((
Current != -1) || !Voting) return 0;
    
VotingTime--;
    if(
VotingTime <= 0)
    {
        
Voting false;
        new 
BaseIDArenaID;
        new 
maxam 0tmparenas[300];
        for (new 
0<= MAX_MAPi++)
        {
            if (
!= BaseID)
            {
                if (
Votes2[i] > Votes2[BaseID]){
                    
BaseID i;
                }
            }
        }
        for (new 
0<= MAX_MAPi++)
        {
            if (
!= ArenaID)
            {
                if (
Votes[i] > Votes[ArenaID]){
                    
ArenaID i;
                }
            }
        }
        if(
BaseID ArenaID){
            for (new 
0<= MAX_MAPi++)
            {
                if (
Votes2[i] == Votes2[BaseID]){
                    
tmparenas[maxam] = i;
                    
maxam++;
                }
            }
            
StartMode(tmparenas[random(maxam)], BASE);
        } else {
            for (new 
0<= MAX_MAPi++)
            {
                if (
Votes[i] == Votes[ArenaID]){
                    
tmparenas[maxam] = i;
                    
maxam++;
                }
            }
            
StartMode(tmparenas[random(maxam)], ARENA);
        }
          return 
1;
    }
    
SetTimer("VoteMove",1000,0);
    return 
0;

Как привести в работоспособность данный код. Если проголосовало большее кол-во за 5 арену, то запустил ее, а если за базу то базу запустил мод.


Re: Голосование - Nikid - 15.10.2013

Так кто подскажет как правильно будет сделать VoteMove. Я ведь и не так уж часто о чем то прошу.


Re: Голосование - Stepashka - 15.10.2013

Quote:
Originally Posted by Nikid
Посмотреть сообщение
Так кто подскажет как правильно будет сделать VoteMove. Я ведь и не так уж часто о чем то прошу.
и ты уверен что это причина по которой все просто обязаны подорваться и помогать тебе?Может нет ни кого, или заняты?!


Re: Голосование - vampir9763 - 15.10.2013

а что тебе мешает проверять сколько проголосовало за определенное место и запускать.

Пример
Код:
if(armydm == 5) { ZapuskArmydm(); }
else if (bazadm == 5) { ZapuskBazaDm(); }
а при голосовании если за армию то armydm++, или bazadm++ и все


Re: Голосование - Nikid - 15.10.2013

Quote:
Originally Posted by vampir9763
Посмотреть сообщение
а что тебе мешает проверять сколько проголосовало за определенное место и запускать.

Пример
Код:
if(armydm == 5) { ZapuskArmydm(); }
else if (bazadm == 5) { ZapuskBazaDm(); }
а при голосовании если за армию то armydm++, или bazadm++ и все
Votes2[baseid] = Votes2[baseid] +1;
Votes[baseid] = Votes[baseid] +1;
Quote:
Originally Posted by Stepashka
Посмотреть сообщение
и ты уверен что это причина по которой все просто обязаны подорваться и помогать тебе?Может нет ни кого, или заняты?!
Но ты нашел свободное время и почему-то сложно помочь. А экстрасенсов тут я не ищу.


Re: Голосование - Mutha_X - 15.10.2013

Между прочим он потратил ровно столько времени, сколько мог. А чтобы даже несколько строк кода написать нужно потратить время на осмысление, как минимум.

Да, и ты, Nikid, узко мыслишь - это доказывают 2 вещи:
1) не считаешься с тем сколько у других времени.
2) вместо кучи условий и разноимённых переменных для очков голосования мог бы использовать массив и заняло бы это меньше места.

Да, я потратил время, но учить кого-то элементарным вещам старики точно не будут тут.


Re: Голосование - Nikid - 17.10.2013

Например? У меня получается сделать только, что проголосую за 5 арену там 2 раза и раз за 5 базу и все равно запустит базу.


Re: Голосование - vampir9763 - 17.10.2013

проверки делай необходимые и все, там дело пары проверок, код прилагать не буду, так как выше пример был


Re: Голосование - Nikid - 17.10.2013

Quote:
Originally Posted by vampir9763
Посмотреть сообщение
проверки делай необходимые и все, там дело пары проверок, код прилагать не буду, так как выше пример был
.... .

Почему код в 1 посте не работает?


Re: Голосование - Stepashka - 17.10.2013

Quote:
Originally Posted by Nikid
Посмотреть сообщение
Почему код в 1 посте не работает?
Начнем с простого, код большой, разбираться в нем некогда, так что: что конкретно не работает?