Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė

[Skriptas]Balsavimas


bebras

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3764 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki,

 

ekspermentavau su nauju dalykėliu ir pasidariau tokį balsavimą, manau visai įdomus todėl nusprendžiau pasidalinti:

 

Skripto viršuje:



#define DIALOG_VOTE 5125 //Svarbu kad nebūtų kitos lentelės su tokiu pačiu ID

new Voted[MAX_PLAYERS];


 

 

Čia jau jums laisvę palieku kaip jūs norite pradėti balsavimą, aš rodysiu lentelę į kurią reikės įvesti klausimą:

 



ShowPlayerDialog(playerid,DIALOG_VOTE,DIALOG_STYLE_INPUT,"Balsavimas","Įveskite klausimą:","Pradėti","Atšaukti");


 

Susiradę callback'a OnDialogRespones rašome:

 



if(dialogid == DIALOG_VOTE && response)
{
if(isnull(inputtext)) return ShowPlayerDialog(playerid,DIALOG_VOTE,DIALOG_STYLE_INPUT,"Balsavimas","Įveskite klausimą:","Pradėti","Atšaukti");
state voteState:vyksta; // Štai čia mano minėtas "naujas dalykėlis"
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,sizeof(Name));
format(string,sizeof(string),"%s pradėjo balsavimą klausimu: %s",name,inputtext);
SendClientMessageToAll(0xFFFF00FF,string);
SendClientMessageToAll(0xFFFF00FF,"Norėdami balsuoti sakykite: taip / ne");
SetTimer("VoteTimer",120000,false); //Mano atveju 2 minutės. 1000 = 1 sekundė
return 1;
}


 

Jeigu pas jus kode kurnors yra callback'as "OnPlayerText", prie jo prirašykite: "<voteState:none>", jis turėtų atrodyti taip:



public OnPlayerText(playerid,text[]) <voteState:none>


 

O dabar kaikas keisto! Kur norite skripte rašome:

 



public OnPlayerText(playerid,text[]) <voteState:vyksta>
{
if(Voted[playerid] != 0)
{
SendClientMessage(playerid,0xFFFF00FF,"Tu jau balsavai");
return 0;
}
if(strcmp(text,"taip",true,4))
{
Voted[playerid] = 1;
SendClientMessage(playerid,0xFFFF00FF,"Tavo balsas įskaičiuotas");
return 0;
}
else if(strcmp(text,"ne",true,2))
{
Voted[playerid] = 2;
SendClientMessage(playerid,0xFFFF00FF,"Tavo balsas įskaičiuotas");
return 0;
}
return 1;
}


 

Taip! Skripte bus 2 callback'ai "OnPlayerText"! Jeigu viską sekėt nuosekliai, kompiliojant klaidų nebus.

 

Timerio funkcija:

 



forward VoteTimer();
public VoteTimer()
{
new Yes,No,string[50];
for(new i = 0; i < MAX_PLAYERS; i++) //arba foreach
{
if(Voted[i] == 1) Yes++;
if(Voted[i] == 2) No++;
Voted[i] = 0;
}
format(string,sizeof(string),"Balsavo už: %d Balsavo prieš: %d",Yes,No);
SendClientMessageToAll(ERROR_COLOR,string);
return 1;
}


 

 

Tai tiek, ir siūlyčiau pasidomėti "State machines(automata)" (tai ką aš čia naudojau), temą žinoma parašė Y_Less, ją rasite čia.

Komentuokit !

Redaguota , nario Justas Š.
Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 7 mėnesių...
(redaguota)

Peržvelgiau kodą, na sugalvojai įdomiai, tačiau ištaisyk klaidą kurios net neįvardinsiu, suprasi kas blogai šiuose parametruose :D

forward VoteTimer();

public VoteTimer(playerid)

{

Ačiū, bet peržvelgiau kodą, jis jau pasenęs ir yra dar viena klaida. Netrukus įkelsiu pataisytu.

 

Naujas kodas įkeltas.

Redaguota , nario Justas Š.
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3764 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...