GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: inf - 2013. Október 13. - 16:00:29

Cím: Szavazós dialog
Írta: inf - 2013. Október 13. - 16:00:29
Sziasztok!

Kérnék egy olyan scriptet hogy van egy dialog és abban van 10 darab választhatósági lehetõség és amelyikre többen szavaznak az fog érvénybe lépni.


Elõre is köszi!


Közben csináltam egy kis alapot:

 
#include 
#include
new Map1;
new Map2;
new Map3;
new Map4;
new Map5;
new Map6;
new Map7;
new Map8;
new Map9;
new Map10;
CMD:telesteszt(playerid, params[])
{
new DIALOGstring[3000];
   format(DIALOGstring, sizeof(DIALOGstring),\"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\",
   \"Map 1\\n\",
   \"Map 2\\n\",
   \"Map 3\\n\",
   \"Map 4\\n\",
   \"Map 5\\n\",
   \"Map 6\\n\",
   \"Map 7\\n\",
   \"Map 8\\n\",
   \"Map 9\\n\",
   \"Map 10\\n\");
   ShowPlayerDialog(playerid, 179, DIALOG_STYLE_MSGBOX, \"Pályák\", DIALOGstring, \"Szavazás\",\"\");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==179)
{
if(response)
{
if(listitem==0)
{
Map1++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==1)
{
Map2++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==2)
{
Map3++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==3)
{
Map4++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==4)
{
Map5++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==5)
{
Map6++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==6)
{
Map7++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==7)
{
Map8++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==8)
{
Map9++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
if(listitem==9)
{
Map10++;
SendClientMessage(playerid, 0,\"Sikeresen leadtad szavazatodat!\");
}
}
}
return 1;
}
Cím: Szavazós dialog
Írta: MesterMartino - 2013. Október 13. - 18:00:02
Szia!
Találtam angol forumon egy ilyesmi scriptet, érdemes megnézni mert szerintem egészen jó!  :smokin:
A script: http://forum.sa-mp.com/showthread.php?t=201339
Üdv: MesterMartino
Cím: Szavazós dialog
Írta: inf - 2013. Október 13. - 19:43:47
Nem tudtam megcsinálni.
De közben csináltam egy kis alapot nem tudnád tovább írni?
Cím: Szavazós dialog
Írta: MesterMartino - 2013. Október 13. - 20:19:13
Én kicsit másképpen képzelném el ezt az egészet, nem csináltam meg neked az egészet de egy példascriptet elkészítettem neked!  :smokin:
A script:
 
#include 
#include
#include  //Saját függvénykönyvtár.
#define DIALOG_VOTE 1
#pragma tabsize 0
stock PName(playerid)
{
new nev[MAX_PLAYER_NAME];
GetPlayerName(playerid,nev,sizeof(nev));
return nev;
}
new map1 = 0;
new map2 = 0;
new map3 = 0;
new tartozkodik = 0;
CMD:makevote(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return msg(playerid,piros,\"Nem vagy Rcon admin\");
for(new i; i < MAX_PLAYERS; i++)
{
          ShowPlayerDialog(i,DIALOG_STYLE_LIST,DIALOG_VOTE,\"Pályák\",\"Map1\\nMap2\\nMap3\",\"Szavazás\",\"Tartózkodás\");
          //Én most csak 3 pályát csinálok, de te ezt kiegészítheted 10-el.
    SetTimer(\"votetimer\",60000,false); //Indítok egy timert.
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_VOTE)
{
    if(!response)
{
    new string[100];
   format(string,sizeof(string),\"%s tartózkodik a szavazástól.\",PName(playerid));
   msgall(RED,string);
   tartozkodik ++;
}
if(listitem == 0)
{
    new string[100];
    format(string,sizeof(string),\"%s a map 1 re szavazott\",PName(playerid));
    msgall(RED,string);
    map1 ++;
}
if(listitem == 1)
{
    new string[100];
    format(string,sizeof(string),\"%s a map 2 re szavazott\",PName(playerid));
    msgall(RED,string);
    map2 ++;
}
if(listitem == 2)
{
    new string[100];
    format(string,sizeof(string),\"%s a map 3 re szavazott\",PName(playerid));
    msgall(RED,string);
    map3 ++;
}
}
return 1;
}
forward votetimer();
public votetimer(); //Amikor a timer lejár.
{
msgall(feher,\"Szavazás infó:\");
new string[100];
format(string,sizeof(string),\"%i játékos tartózkodott\",tartozkodik);
msgall(RED,string);
new string2[100];
format(string2,sizeof(string2),\"%i játékos a map1 -re szavazott\",map1);
msgall(RED,string2);
new string3[100];
format(string3,sizeof(string3),\"%i játékos a map2 -re szavazott\",map2);
msgall(RED,string3);
new string4[100];
format(string4,sizeof(string4),\"%i játékos a map3 -re szavazott\",map3);
msgall(RED,string4);
//Reseteljük az értékeket:
map1 = 0;
map2 = 0;
map3 = 0;
tartozkodik = 0;
}

 
További jó forumozást remélem tudtam segíteni.
Cím: Szavazós dialog
Írta: Dfoglalo - 2013. Október 13. - 20:42:49
format(DIALOGstring, sizeof(DIALOGstring),\"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\",
   \"Map 1\\n\",
   \"Map 2\\n\",
   \"Map 3\\n\",
   \"Map 4\\n\",
   \"Map 5\\n\",
   \"Map 6\\n\",
   \"Map 7\\n\",
   \"Map 8\\n\",
   \"Map 9\\n\",
   \"Map 10\\n\");
   ShowPlayerDialog(playerid, 179, DIALOG_STYLE_MSGBOX, \"Pályák\", DIALOGstring, \"Szavazás\",\"\");

 
Ezt most nem értem, minek csinálod így? ???
Ja és nem DIALOG_STYLE_MSGBOX, hanem DIALOG_STYLE_LIST-re van szükséged.
Bõven elég így megoldani a dolgot:
 
ShowPlayerDialog(playerid, 179, DIALOG_STYLE_LIST, \"Pályák\", \"Map1\\nMap2\\nMap3\\nMap4\\nMap5\\nMap6\\nMap7\\nMap8\\nMap9\\nMap10, \"Szavazás\",\"Mégsem\");

 


Nekem ez szúrta ki nagyon a szememet, gondoltam, megemlítem ezt a hibádat. Azonban még bõven van mit tanulnod... Egy ilyen kész forráskódot pedig szerintem ne várj, mert senki sem ír egy ilyet, mert túl egyszerû, a kezdõ pedig lusta megtanulni, hogy kell egy ilyet megírni. Ha pedig elkészítjük neked, sosem tanulod meg, hogyan kellett volna. De azért MesterMartino írt neked egy példát, az alapján remélhetõleg ki tudsz indulni. Azonban neked az a bajod, hogy az alapvetõ dolgokat sem, pl. a dialogok típusait sem tudod.
Cím: Szavazós dialog
Írta: inf - 2013. Október 13. - 20:57:31
És azt még nem tudnád beleírni hogy amelyiknek a legnagyobb az értéke az lépjen érvénybe?