End map vote

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Guardian Angel
Извън линия
VIP
VIP
Мнения: 186
Регистриран на: 18 Окт 2016, 02:00
Местоположение: Петрич
Се отблагодари: 1 път
Получена благодарност: 22 пъти

End map vote

Мнение от Guardian Angel » 24 Ное 2016, 15:39

Здравейте! Имам нужда от следния плъгин
В края на всяка карта да излиза вот за играчите да гласуват на въпрос "Харесва ли ви картата?" и отговори "да" "не" . Като резултатите да се записват в текстови файл - пример:
gg_ironcore_pyramid
да - 30
не - 9

Искам го за гън гейм сървър , там картите са много и често се сменят и има доста които не се харесват на играчите, та по тоя начин искам да се пресеят лошите карти. Обаче не знам как точно ще стане защото играта там приключва при минаването на всички оръжия и при победа на някой от играчите то се отваря motd прозорец в който се уведомява кой е спечелил и разни други работи. Та не знам дали ще може при спечелването на картата да се спира играта и да се стартира вота за 5 сек да речем и след това да изскача motd прозореца или пък вота да излиза когато някой играч стигне последния левел - ножа

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Re: End map vote

Мнение от hackera457 » 24 Ное 2016, 18:44

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define PLUGIN "Map Rating"
#define VERSION "1.0"
#define AUTHOR "hackera457"

#pragma semicolon 1

#define ADMIN_ACCESS   ADMIN_KICK

enum _:VOTES
{
    VOTE_YES,
    VOTE_NO
};

new g_iVotes[VOTES], g_szMap[32], g_iMapVault;

new bool:g_bIsVoted[33] = false;

public plugin_init()
{
    register_plugin(PLUGIN,VERSION,AUTHOR);
    
    register_concmd("maprating_show","cmdMapResults",ADMIN_ACCESS,"<map>");
    register_clcmd("say /maprate","StartMapRate");
    
    get_mapname(g_szMap,charsmax(g_szMap));
    
    g_iMapVault = nvault_open("MAPRating");
    
    LoadMapVote();

}

public StartMapRate(id)
{
    if(!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id))
        return PLUGIN_HANDLED;
    
    new szMenuTitle[128];
    
    formatex(szMenuTitle, charsmax(szMenuTitle),"\rHaresva li ti kartata: \y%s^n\rGlasove \dDA: \y%i^n\rGlasove \dNE:\y%i",g_szMap,g_iVotes[VOTE_YES],g_iVotes[VOTE_NO]);
    
    new menu = menu_create(szMenuTitle,"handlerVoteMenu");
    
    menu_additem(menu,"\yDa","1",0);
    menu_additem(menu,"\yNe","2",0);
    
    menu_setprop(menu,MPROP_EXITNAME,"Zatvori");
    
    menu_display(id,menu,0);
    
    return PLUGIN_HANDLED;
}

public handlerVoteMenu(id,iMenu,iItem)
{
    if(iItem == MENU_EXIT)
    {
        menu_destroy(iMenu);
        return PLUGIN_HANDLED;
    }
    
    if(g_bIsVoted[id])
    {
        client_print(id,print_chat,"[MapRate] You already gave rating for this map!");
        return PLUGIN_HANDLED;
    }
        
    new szData[6], szName[64];
    new item_access, item_callback;
    
    menu_item_getinfo(iMenu,iItem,item_access,szData, charsmax(szData),szName,charsmax(szName),item_callback);
    
    new key = str_to_num(szData);
    
    switch(key)
    {
        case 1:
        {
            g_bIsVoted[id] = true;
            g_iVotes[VOTE_YES]++;
            
            
            client_print(id,print_chat,"[MapRate] You have successfuly voted for this map with YES!");
        }
        
        case 2:
        {
            g_bIsVoted[id] = true;
            g_iVotes[VOTE_NO]++;
            
            client_print(id,print_chat,"[MapRate] You have successfuly voted for this map with NO!");
        }
    }
    
    menu_destroy(iMenu);
    
    return PLUGIN_HANDLED;
}

public client_putinserver(id)
{
    if(!g_bIsVoted[id])
        set_task(1.0,"StartMapRate",id,_,_,_,0);
    
}

public plugin_end()
{
    SaveMapVote();
}

public SaveMapVote()
{
    new szVaultData[256];
    
    formatex(szVaultData, charsmax(szVaultData),"#%i#%i",g_iVotes[VOTE_YES],g_iVotes[VOTE_NO]);
    
    nvault_set(g_iMapVault,g_szMap,szVaultData);
}

public LoadMapVote()
{
    new szYes[10],szNo[10],szData[16];
    
    nvault_get(g_iMapVault,g_szMap,szData,charsmax(szData));
    
    replace_all(szData,charsmax(szData),"#"," ");
        
    parse(szData,szYes,charsmax(szYes),szNo,charsmax(szNo));
    
    g_iVotes[VOTE_YES] = str_to_num(szYes);
    g_iVotes[VOTE_NO] = str_to_num(szNo);
    
}

public cmdMapResults(id,iLevel,iCid)
{
    if(!cmd_access(id,iLevel,iCid,1,false))
        return PLUGIN_HANDLED;
        
    new szArg[32];
    
    read_argv(1,szArg, charsmax(szArg));
    
    console_print(id,"------------- < Rezultati za karta %s > -------------n",szArg);
    
    new szYes[10],szNo[10],iYes,iNo, szData[16];
    
    if(nvault_get(g_iMapVault,szArg,szData,charsmax(szData)))
    {
        replace_all(szData,charsmax(szData),"#"," ");
        
        parse(szData,szYes,charsmax(szYes),szNo,charsmax(szNo));
        
        iYes = str_to_num(szYes);
        iNo = str_to_num(szNo);
        
        console_print(id,"Glasove Da: %i^nGlasove Ne: %i",iYes,iNo);        
    }
    
    console_print(id,"^n------------- < Rezultati za karta %s > -------------",szArg);
    
    return PLUGIN_HANDLED;
}

 
Направил съм ти го така - при влизане на играч в сървъра, ако не е гласувал, ще му се отвори менюто за гласуване, да може да даде своя глас.
След като е гласувал веднъж няма да може да гласува повече, но ще може да отвори менюто с командата /maprate и да вижда колко гласа са ЗА и колко гласа НЕ и при опит да промени гласа си няма да му позволи и ще излезе съобщение. Резултатите се запазват с nvault и за да видиш резултатите за дадена карта пишеш в конзолата

Код за потвърждение: Избери целия код

maprating_show <map>
където <map> заменяш с името на картата и ти илиза в конзолата резултата.

Пример:

Код за потвърждение: Избери целия код

maprating_show "gg_dust2"
Командата се отваря със флаг "c" ADMIN_KICK, можеш да си го промениш от тук

Код за потвърждение: Избери целия код

#define ADMIN_ACCESS   ADMIN_KICK
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
talibana
Извън линия
Потребител
Потребител
Мнения: 49
Регистриран на: 21 Окт 2016, 22:47
Местоположение: София
Се отблагодари: 5 пъти
Обратна връзка:

Re: End map vote

Мнение от talibana » 24 Ное 2016, 23:36

Хубаво е да се добави някаква команда която да вади всички резултати примерно

mapraiting * както е votemap командата. :)

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Re: End map vote

Мнение от hackera457 » 25 Ное 2016, 05:29

talibana написа:Хубаво е да се добави някаква команда която да вади всички резултати примерно

mapraiting * както е votemap командата. :)
Може, но нека оставим засега това. Ако автора иска, ще му направя. По натам може да направя по-разширена версия, дотогава това е напълно работеща!
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Guardian Angel
Извън линия
VIP
VIP
Мнения: 186
Регистриран на: 18 Окт 2016, 02:00
Местоположение: Петрич
Се отблагодари: 1 път
Получена благодарност: 22 пъти

Re: End map vote

Мнение от Guardian Angel » 25 Ное 2016, 14:18

Ами по принцип видях че той е писал и за това не писах нищо. Но е доста по-удобно да излиза лист с всички карти за които вече е гласувано. Защото картите са наистина много които се въртят и ако тръгна за всяка по отделно да пиша командата за да видя гласувано ли е за нея или не ще ми отнеме страшно много време. Докато ако има команда която да извежда всички карти за които е било гласувано ще е повече от идеално.
Благодаря много.

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Re: End map vote

Мнение от hackera457 » 27 Ное 2016, 22:54

viewtopic.php?f=32&t=726

Ето ви го изцяло доработен
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 17 госта