Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Nowy Plugin

[ROZWIĄZANE] Plugin do (trwałego) głosowania

Nowy Plugin

  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 Karpaj

    Zaawansowany

  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:111
  • Imię:Karol
  • Lokalizacja:Szamo
Offline

Napisano 09.10.2011 20:39

Witam. Czy ktoś pootrafił by napisać plugin, do głosowania na kilka opcji, na czas włączenia pluginu? Z zapamiętaniem danego SID (czyli jedna osoba może zagłosować tylko raz)
Coś w stylu anty metori, ale bez łączenia z bazą danych, a jedynie z zapisaniem obecnego wyniku do pliku tekstowego np.

Pytanie

ODP 1 - tekst - liczba głosów
SID 1
SID 2
SID 3

ODP 2 - tekst - liczba głosów
SID 4
SID 5

Chodzi mi o robienie vote które mapy są fajnie, które nie.

Głosowanie powinno być wywoływane w dowolnym momencie gry poprzez wpisanie na chacie /glosuj


Pozdrawiam i z góry dziękuję:)
  • +
  • -
  • 0

#2 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 10.10.2011 14:10

Opisz bardziej jak to ma działać. (to ma działać na podstawie komendy sm_vote ?)

Użytkownik Cypis' edytował ten post 10.10.2011 14:13

  • +
  • -
  • 1

#3 Karpaj

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:111
  • Imię:Karol
  • Lokalizacja:Szamo
Offline

Napisano 12.10.2011 01:19

ktoś po wpisaniu danej komendy (przyjmijmy /glosuj), dostaje pytanie na górze, a pod nim kilka opcji do wyboru
Pytanie XXX

OPCJA 1
OPCJA 2
OPCJA 3
OPCJA 4

Po wduszeniu dowolnej opcji możliwość głosowania się u niego wyłącza i dalej gra normalnie.
Natomiast w danym pliku zapisuje jego Steam ID (bądź nick, zależy co łatwiej) oraz jego odpowiedź (choćby w formie numerku odpowiedzi). Było by fajnie jakby plugin przy okazji blokował możliwość ponownego głosowania przez tę samą osobę (czyli najwygodniej aby zapisywało SIDy)

Wiem że nie jest to prosty plugin, ale może ktoś podejmie wyzwanie
  • +
  • -
  • 0

#4 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 15.10.2011 22:55

sprawdź czy działa:


#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
name = "Fun Vote",
author = "Cypis",
description = "Fun Vote",
version = "1.0",
url = "http://www.amxx.pl/"
};

new Handle:g_Players = INVALID_HANDLE;
new String:file_name[2][128];

public OnPluginStart()
{
g_Players = CreateArray(ByteCountToCells(33));

RegConsoleCmd("glosuj", Command_Vote);

BuildPath(Path_SM, file_name[0], sizeof(file_name[]), "logs/pytania.txt");
BuildPath(Path_SM, file_name[1], sizeof(file_name[]), "logs/sidy.txt");
}

public OnConfigsExecuted()
{
if(!FileExists(file_name[1]))
return;

new Handle:file = OpenFile(file_name[1], "r");
while(!IsEndOfFile(file))
{
decl String:g_sid[32];
ReadFileLine(file, g_sid, sizeof(g_sid));
PushArrayString(g_Players, g_sid);
}
CloseHandle(file);
}

public Action:Command_Vote(client, args)
{
if(!IsClientConnected(client) || !IsClientInGame(client) || IsFakeClient(client) || IsVoteInProgress())
return Plugin_Handled;

if(MozeGlosowac(client))
return Plugin_Handled;

new Handle:menu = CreateMenu(Handle_VoteMenu);
SetMenuTitle(menu, "Pytanie XXX");
AddMenuItem(menu, "1", "OPCJA 1");
AddMenuItem(menu, "2", "OPCJA 2");
AddMenuItem(menu, "3", "OPCJA 3");
AddMenuItem(menu, "4", "OPCJA 4");
SetMenuExitButton(menu, false);
DisplayMenu(menu, client, 20);
return Plugin_Handled;
}
public Handle_VoteMenu(Handle:menu, MenuAction:action, param1, param2)
{
if(action == MenuAction_Select)
{
decl String:info[32];
GetMenuItem(menu, param2, info, sizeof(info));

decl String:name[32];
decl String:auth[32];
GetClientName(param1, name, sizeof(name));
GetClientAuthString(param1, auth, sizeof(auth));

LogToFile(file_name[0], "Gracz %s (%s) zagłosował na %s (%i)", name, auth, info, param2);
LogToFile(file_name[1], "%s", auth);
PushArrayString(g_Players, auth);
}
else if(action == MenuAction_End)
{
CloseHandle(menu);
}
}

stock bool:MozeGlosowac(client)
{
if(!GetArraySize(g_Players))
return false;

decl String:auth[32];
GetClientAuthString(client, auth, sizeof(auth));
for(new i=0; i<GetArraySize(g_Players); i++)
{
decl String:g_sid[32];
GetArrayString(g_Players, i, g_sid, sizeof(g_sid));
if(strcmp(auth, g_sid, false) == 0)
return true;
}
return false;
}

Użytkownik Cypis' edytował ten post 15.10.2011 23:03

  • +
  • -
  • 2

#5 Karpaj

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:111
  • Imię:Karol
  • Lokalizacja:Szamo
Offline

Napisano 16.10.2011 22:21

wszystko pięknie działa :>
  • +
  • -
  • 0

#6 Onyke

    Godlike

  • Przyjaciel

Reputacja: 708
Guru

  • Postów:2 178
Offline

Napisano 17.10.2011 18:38

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Nowy Plugin

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych