Szerző Téma: Szavazórendszer  (Megtekintve 1029 alkalommal)

Szavazórendszer
« Dátum: 2015. november 23. - 17:04:22 »
0 Show voters
Sziasztok! Az angol fórumon találtam egy szavazórendszert és lemagyarítottam. A készítő nevére nem emlékszem, mivel már nem tudom hol találtam és a scriptben nem volt benne.
A scriptben egy kérdést tudsz feltenni, amit a szerveren lévő játékosok meg tudnak válaszolni a /igen és a /nem parancs segítségével.
Új kérdést csak adminok hozhatnak létre (ladminnal, ezt én tettem bele, mivel én ezt az adminrendszert használom, de aki akarja ki tudja törölni vagy átírni a saját adminrendszerére). Ha meg szeretnétek kapni az eredményt, akkor egy adminnak be kell írnia, hogy /end. A script megszámolja, hogy hányan szavaztak az igenre és hányan a nemre, de még azt is kiírja, hogy melyikre szavaztak többen.
Bug: Az esetek nagy részében hiába nem szavazott senki azt írja ki, hogy döntetlen lett, pedig az is bele van írva a script-be, hogy jelezze, ha senki nem szavazott, de ez csak nagyon ritkán működik helyesen.
Használjátok egészséggel :)
Képek:
\"width=500http://www.kepfeltoltes.hu/151123/kell_1_www.kepfeltoltes.hu_.jpg[/img]
\"width=500http://www.kepfeltoltes.hu/151123/kell_2_www.kepfeltoltes.hu_.jpg[/img]
\"width=500http://www.kepfeltoltes.hu/151123/kell_3_www.kepfeltoltes.hu_.jpg[/img]
\"width=500http://www.kepfeltoltes.hu/151123/kell_4_www.kepfeltoltes.hu_.jpg[/img]
Pastebin: http://pastebin.com/4D6rhnTE
Mediafire: http://www.mediafire.com/download/18r44zqzk2kov4w/szavazórendszer.rar
kód:
 
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
//A Szavazórendszert magyarította: GoldTec
#include <a_samp>
#include <IsPlayerLAdmin>
#define LARANJA             0xFF6600AA
#define VERDECLARO          0x00FF0CAA
#define VERDEMEDIO          0xa5b1A3AA
#define BRANCO              0xFFFFFFAA
#define VERMELHO            0xFF0000AA
#define VERDEFRACO          0x80cf80AA
#define COLOR_ULTRARED     0xFF0606FF
#define COLOR_GREEN 0x33AA33AA
enum e_votacao
{
        bool:iniciada,
        sim,
        nao,
        total
}
new votacao[e_votacao];
new votou[MAX_PLAYERS];
 
main()
{
print(\"\\n----------------------------------\");
print(\" Blank Gamemode by your name here\");
print(\"----------------------------------\\n\");
}
public OnGameModeInit()
{
// Don\'t use these lines if it\'s a filterscript
SetGameModeText(\"Blank Script\");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
new string[256];
if(!strcmp(cmdtext, \"/vote\", true,5))
        {
                if (IsPlayerAdminLevel(playerid, 5))
                {
                    if(!votacao[iniciada])
                    {
                                if(!strlen(cmdtext[6]))
                                return SendClientMessage(playerid,COLOR_ULTRARED, \"Használat: /vote [kérdés]\");
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                format(string, sizeof string, \"==> Új kérdés: %s?\", cmdtext[6]);
                                SendClientMessageToAll(VERDECLARO, string);
                                SendClientMessageToAll(LARANJA,\"        \");
                                SendClientMessageToAll(LARANJA,\" > A szavazáshoz írd be::\");
                                SendClientMessageToAll(VERDEMEDIO, \"> /igen - Hogy igennel szavazz.\");
                                SendClientMessageToAll(VERDEMEDIO, \"> /nem - Hogy nemmel szavazz.\");
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                votacao[iniciada] = true;
                                votacao[sim] = 0;
                                votacao[nao] = 0;
                                GameTextForAll(\"~r~Szavazas~w~~b~ letrehozva!\",6000,3);
                                for(new i; i <MAX_PLAYERS; i++)
                                {
                                        votou = false;
                                }
                        } else {
                                SendClientMessage(playerid,COLOR_ULTRARED,\"Egy szavazás már el van indítva!\");
                        }
                } else {
                        SendClientMessage(playerid,COLOR_ULTRARED,\"Nincs elég magas szinted a parancs használatához!\");
                }
                return 1;
        }
if(!strcmp(cmdtext, \"/igen\", true))
        {
                if(votacao[iniciada] && !votou[playerid])
                {
                        SendClientMessage(playerid,LARANJA, \"Sikeresen szavaztál az igenre!\");
                        votacao[sim]++;
                        votacao[total]++;
                        votou[playerid] = true;
                        return 1;
                }
                return 0;
        }
if(!strcmp(cmdtext, \"/nem\", true))
        {
                if(votacao[iniciada] && !votou[playerid])
                {
                        SendClientMessage(playerid,LARANJA, \"Sikeresen szavaztál a nemre!\");
                        votacao[nao]++;
                        votacao[total]++;
                        votou[playerid] = true;
                        return 1;
                }
                return 0;
        }
if(!strcmp(cmdtext, \"/end\", true))
        {
                if (IsPlayerAdminLevel(playerid, 5))
                {
                        if(votacao[iniciada])
                        {
                               SendClientMessageToAll(LARANJA,\"====================================\");
                                SendClientMessageToAll(LARANJA, \"==> Eredmény: <<==\");
                                format(string, sizeof string, \"> %d Játékos igennel szavazott.\", votacao[sim]);
                                SendClientMessageToAll(VERDEMEDIO,string);
                                format(string, sizeof string, \"> %d Játékos nemmel szavazott.\", votacao[nao]);
                                SendClientMessageToAll(VERDEMEDIO, string);
                                format(string, sizeof string, \"> Ennyi szavazat érkezett: %d\",votacao[total]);
                                SendClientMessageToAll(BRANCO, string);
                                if(votacao[sim] == votacao[nao])
                                {
                                        SendClientMessageToAll(COLOR_GREEN, \"==> Döntetlen lett!\");
                                } else if(votacao[sim] > votacao[nao])
                                {
                                        SendClientMessageToAll(COLOR_GREEN, \"==> A legtöbb ember igennel szavazott.\");
                                } else if(votacao[sim] < votacao[nao])
                                {
                                        SendClientMessageToAll(COLOR_GREEN, \"==> A legtöbb ember nemmel szavazott.\");
                                }
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                GameTextForAll(\"~r~A szavazasnak~w~ ~r~ ~b~vege!\",6000,3);
                                votacao[iniciada] = false;
                                votacao[sim] = 0;
                                votacao[nao] = 0;
                                votacao[total] = 0;
                                for(new i; i <MAX_PLAYERS; i++)
                                {
                                        votou = false;
                                }
                        } else {
                                SendClientMessage(playerid,BRANCO, \"Nem érkezett szavazás a kérdésre!\");
                        }
                } else {
                        SendClientMessage(playerid,COLOR_ULTRARED, \"Nincs elég magas szinted a parancs használatához!\");
                }
                return 1;
        }
return 0;
}
« Utoljára szerkesztve: 2015. november 23. - 17:10:46 írta GoldTec »

Szavazórendszer
« Válasz #1 Dátum: 2015. november 23. - 17:49:54 »
0 Show voters
Hát ahogy nézem a \"votacao[iniciada]\" azt tárolja, hogy elindult-e a szavazás. Ebből következik, hogyha nincs elindítva a szavazás, akkor fogja kiírni, hogy nem érkezett válasz.
Spoiler for Helyes kód(Nem teszteltem):


// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
//A Szavazórendszert magyarította: GoldTec
#include <a_samp>
#include <IsPlayerLAdmin>
#define LARANJA             0xFF6600AA
#define VERDECLARO          0x00FF0CAA
#define VERDEMEDIO          0xa5b1A3AA
#define BRANCO              0xFFFFFFAA
#define VERMELHO            0xFF0000AA
#define VERDEFRACO          0x80cf80AA
#define COLOR_ULTRARED          0xFF0606FF
#define COLOR_GREEN 0x33AA33AA
enum e_votacao
{
        bool:iniciada,
        sim,
        nao,
        total
}
new votacao[e_votacao];
new votou[MAX_PLAYERS];
 
main()
{
        print(\"\\n----------------------------------\");
        print(\" Blank Gamemode by your name here\");
        print(\"----------------------------------\\n\");
}
public OnGameModeInit()
{
        // Don\'t use these lines if it\'s a filterscript
        SetGameModeText(\"Blank Script\");
        AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
        return 1;
}
public OnGameModeExit()
{
        return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
        new string[256];
        if(!strcmp(cmdtext, \"/vote\", true,5))
        {
                if (IsPlayerAdminLevel(playerid, 5))
                {
                    if(!votacao[iniciada])
                    {
                                if(!strlen(cmdtext[6]))
                                return SendClientMessage(playerid,COLOR_ULTRARED, \"Használat: /vote [kérdés]\");
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                format(string, sizeof string, \"==> Új kérdés: %s?\", cmdtext[6]);
                                SendClientMessageToAll(VERDECLARO, string);
                                SendClientMessageToAll(LARANJA,\"        \");
                                SendClientMessageToAll(LARANJA,\" > A szavazáshoz írd be::\");
                                SendClientMessageToAll(VERDEMEDIO, \"> /igen - Hogy igennel szavazz.\");
                                SendClientMessageToAll(VERDEMEDIO, \"> /nem - Hogy nemmel szavazz.\");
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                votacao[iniciada] = true;
                                votacao[sim] = 0;
                                votacao[nao] = 0;
                                GameTextForAll(\"~r~Szavazas~w~~b~ letrehozva!\",6000,3);
                                for(new i; i <MAX_PLAYERS; i++)
                                {
                                        votou = false;
                                }
                        } else {
                                SendClientMessage(playerid,COLOR_ULTRARED,\"Egy szavazás már el van indítva!\");
                        }
                } else {
                        SendClientMessage(playerid,COLOR_ULTRARED,\"Nincs elég magas szinted a parancs használatához!\");
                }
                return 1;
        }
        if(!strcmp(cmdtext, \"/igen\", true))
        {
                if(votacao[iniciada] && !votou[playerid])
                {
                        SendClientMessage(playerid,LARANJA, \"Sikeresen szavaztál az igenre!\");
                        votacao[sim]++;
                        votacao[total]++;
                        votou[playerid] = true;
                        return 1;
                }
                return 0;
        }
        if(!strcmp(cmdtext, \"/nem\", true))
        {
                if(votacao[iniciada] && !votou[playerid])
                {
                        SendClientMessage(playerid,LARANJA, \"Sikeresen szavaztál a nemre!\");
                        votacao[nao]++;
                        votacao[total]++;
                        votou[playerid] = true;
                        return 1;
                }
                return 0;
        }
        if(!strcmp(cmdtext, \"/end\", true))
        {
                if (IsPlayerAdminLevel(playerid, 5) && votacao[iniciada])
                {
                        if(votacao[total] != 0)
                        {
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                SendClientMessageToAll(LARANJA, \"==> Eredmény: <<==\");
                                format(string, sizeof string, \"> %d Játékos igennel szavazott.\", votacao[sim]);
                                SendClientMessageToAll(VERDEMEDIO,string);
                                format(string, sizeof string, \"> %d Játékos nemmel szavazott.\", votacao[nao]);
                                SendClientMessageToAll(VERDEMEDIO, string);
                                format(string, sizeof string, \"> Ennyi szavazat érkezett: %d\",votacao[total]);
                                SendClientMessageToAll(BRANCO, string);
                                if(votacao[sim] == votacao[nao])
                                {
                                        SendClientMessageToAll(COLOR_GREEN, \"==> Döntetlen lett!\");
                                } else if(votacao[sim] > votacao[nao])
                                {
                                        SendClientMessageToAll(COLOR_GREEN, \"==> A legtöbb ember igennel szavazott.\");
                                } else if(votacao[sim] < votacao[nao])
                                {
                                        SendClientMessageToAll(COLOR_GREEN, \"==> A legtöbb ember nemmel szavazott.\");
                                }
                                SendClientMessageToAll(LARANJA,\"====================================\");
                                GameTextForAll(\"~r~A szavazasnak~w~ ~r~ ~b~vege!\",6000,3);
                                votacao[iniciada] = false;
                                votacao[sim] = 0;
                                votacao[nao] = 0;
                                votacao[total] = 0;
                                for(new i; i <MAX_PLAYERS; i++)
                                {
                                        votou = false;
                                }
                        } else {
                                SendClientMessage(playerid,BRANCO, \"Nem érkezett szavazás a kérdésre!\");
                        }
                } else {
                        SendClientMessage(playerid,COLOR_ULTRARED, \"Nincs elég magas szinted a parancs használatához vagy nincs szavazás elindítva!\");
                }
                return 1;
        }
        return 0;
}

Szavazórendszer
« Válasz #2 Dátum: 2015. november 23. - 17:54:26 »
0 Show voters
Tényleg :D Köszi :D

Dupla hozzászólás automatikusan összefûzve. ( 2015. november 23. - 17:57:31 )

Egyébként ezt:
format(string, sizeof string, \"> %d Játékos nemmel szavazott.\", votacao[nao]);

 Azért nem is raktam bele (sőt ha jól emlékszem eredetileg kiírta, hogy ki mire szavazott), mert nem kartam, hogy mindenki lássa, hogy ki mire szavaz. Csak az eredmény látszódjon, hogy ne generáljon senki dühöt magában, hogyha xy erre szavazott és ne szólja meg.
« Utoljára szerkesztve: 2015. november 23. - 17:57:31 írta GoldTec »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal