Ostatnio ściągnąłem plugin Questions / Equation Event i chciałem przerobić aby przy wygranej, przegranej i przy zadawaniu pytania były dźwięki. Przerobiłem sobie troszkę lecz nie działa dźwięk przy przegranej, przy zadawaniu pytania w ogóle nie robiłem, a przy wygranej dźwięk działa.
Macie sma:
Spoiler
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#define PLUGIN "Questions / Equation Event"
#define VERSION "1.1"
#define AUTHOR "Screeaam.."
new szQuestion[512] = "";
new szAnswer[512] = "";
new szPyt[512] = "";
new szOdp[512] = "";
new message[512];
new gszFile[128];
// CVARS
new mode, qee, czas, odliczanie, zakonczenie, style, first, second, RGB, PosX, PosY, minF, maxF, minG, maxG;
new count, active, start, show_time;
// True answer;
new answer[512];
// Catch winner?
new bool:catch = false;
// Question / Equation is in progress?
new bool:is_in_progress;
// Arrays
new Array:questions, Array:answers;
new SyncHudObj;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
// CVARS
qee = register_cvar("qee_active", "1"); // 0 - Plugin Disable; 1 - Plugin Enable
mode = register_cvar("qee_mode", "2"); // 0 - Questions; 1 - Equation; 2 - random;
czas = register_cvar("qee_time_start", "30.0"); // Time to start Questions in second
odliczanie = register_cvar("qee_count", "10"); // Time Countdown to the questions
zakonczenie = register_cvar("qee_end", "8"); // Time to write answer
style = register_cvar("qee_show", "0"); // Style to show questions 0 - HudMessage; 1 - ClientPrint
first = register_cvar("qee_max_fnumber", "100"); // First number to equation
second = register_cvar("qee_max_snumber", "200"); // Second number to equation
RGB = register_cvar("qee_rgb", "255255255"); // Colors of HudMessages
PosX = register_cvar("qee_posx", "-1.0"); // Position X of HudMessage
PosY = register_cvar("qee_posy", "0.28"); // Position Y of HudMessage
minF = register_cvar("qee_min_frags", "2"); // Minimum frags award
maxF = register_cvar("qee_max_frags", "10"); // Maximum frags award
minG = register_cvar("qee_min_gold", "500"); // Minimum gold award
maxG = register_cvar("qee_max_gold", "5000"); // Maximum gold award
show_time = register_cvar("qee_time_hud", "6.0"); // How long do you want to see a shout
start = get_pcvar_num(czas);
// ARRAYS
questions = ArrayCreate(64,10)
answers = ArrayCreate(64,10)
// REGISTERS
register_clcmd("say", "say_handle");
register_clcmd("Pytanie", "pytanie");
register_clcmd("Odpowiedz", "odpowiedz");
register_clcmd("say /menu_qee", "admin_menu");
register_clcmd("/menu_qee", "admin_menu");
register_clcmd("/qee", "admin_menu");
register_clcmd("say /qee", "admin_menu");
set_task(float(start), "g_count", 2000);
// FILES
new szDir[128];
get_configsdir(szDir, charsmax(szDir));
add(szDir, sizeof szDir, "/Questions_Equation");
if (!dir_exists(szDir))
mkdir(szDir);
format(gszFile, charsmax(gszFile), "%s/questions.ini", szDir);
if(!file_exists(gszFile))
write_file(gszFile, "^"Stolica Polski to?^" ^"Warszawa^"");
SyncHudObj = CreateHudSyncObj();
ZaladujPlik();
}
public plugin_precache()
{
precache_sound("sound/xshoot/wygrana.mp3")
precache_generic("sound/xshoot/wygrana.mp3")
precache_sound("sound/xshoot/przegrana.mp3")
precache_generic("sound/xshoot/przegrana.mp3")
}
public ZaladujPlik()
{
new sz1[64],sz2[64];
new line=0, text[128],chars
do
{
line = read_file(gszFile,line,text,127,chars)
parse(text, sz1, 63, sz2, 63);
ArrayPushString(questions,sz1);
ArrayPushString(answers,sz2);
}
while(line!=0)
}
public Zapisz(id){
new file = fopen(gszFile, "a");
new szData[512];
formatex(szData, 512, "^"%s^" ^"%s^"^n", szPyt, szOdp);
fputs(file, szData);
client_print(id, 3, "******Zapisano!******");
fclose(file);
}
public g_count()
{
active = get_pcvar_num(qee);
if(active && !is_in_progress)
{
count = get_pcvar_num(odliczanie);
format(message, charsmax(message), "Do zadania pytania pozostalo %i sekund", count);
show_text(message)
remove_task(2000);
set_task(1.0, "odswiezzz", 2000,_,_,"b");
is_in_progress = true;
}
}
public odswiezzz()
{
new modes = get_pcvar_num(mode);
if(count-- <= 0){
remove_task(2000)
for(new id = 1; id < 33; id++) choose_style(modes)
}
else
{
format(message, charsmax(message), "Do zadania pytania pozostalo %i sekund", count);
show_text(message)
}
}
public choose_style(style)
{
if(active)
{
new end = get_pcvar_num(zakonczenie);
set_task(float(end), "Zakoncz", 3000);
catch = true;
switch(style)
{
case 0:
{
static line;
if(++line >= ArraySize(questions)){
line = 0;
}
ArrayGetString(questions,line,szQuestion,charsmax(szQuestion));
ArrayGetString(answers,line,szAnswer,charsmax(szAnswer));
format(message, charsmax(message), "%s", szQuestion);
show_text(message)
format(answer, charsmax(answer), "%s", szAnswer);
return PLUGIN_HANDLED;
}
case 1:
{
new fnumber = get_pcvar_num(first); new snumber = get_pcvar_num(second);
new rnd1 = random_num(10, fnumber);
new rnd2 = random_num(10, snumber);
new rnd3 = rnd2 / 2;
new wynik = rnd1 + rnd2 - rnd3;
format(answer, 511, "%i", wynik);
format(message, charsmax(message), "Rozwiaz rownanie: %i + %i - %i", rnd1, rnd2, rnd3);
show_text(message)
return PLUGIN_HANDLED;
}
case 2:
{
new rnd = random_num(0,1);
choose_style(rnd);
return PLUGIN_HANDLED;
}
}
}
return PLUGIN_CONTINUE;
}
public say_handle(id){
if(!catch || !active)
return PLUGIN_CONTINUE;
new command[192]
read_argv(1,command,191)
if(equali(command,answer))
{
awards(id);
remove_task(3000);
set_task(float(start), "g_count", 2000);
catch = false;
is_in_progress = false;
}
return PLUGIN_CONTINUE;
}
public Zakoncz(id)
{
if(!active || !catch) return PLUGIN_HANDLED;
format(message, charsmax(message), "Przykro mi, nikt nie wygral!");
show_text(message);
client_cmd (id, "mp3 play sound/xshoot/przegrana.mp3")
catch = false;
is_in_progress = false;
set_task(float(start), "g_count", 2000);
return PLUGIN_HANDLED;
}
public plugin_end(){
ArrayDestroy(questions);
ArrayDestroy(answers);
}
public admin_menu(id)
{
new menu = menu_create("Dodawanie Pytan", "admin_menu_handle")
menu_additem(menu, "Dodaj Pytanie");
menu_additem(menu, "Przeladuj pytania");
if(get_user_flags(id) & ADMIN_BAN)
menu_display(id, menu, 0)
}
public admin_menu_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item == 0)
client_cmd(id, "messagemode Pytanie");
if(item == 1){
ZaladujPlik();
client_print(id, 3, "******Przeladowano pytania!******");
}
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
public pytanie(id){
new text[192]
read_argv(1,text,191)
format(szPyt, charsmax(szPyt), "%s", text);
client_cmd(id, "messagemode Odpowiedz");
}
public odpowiedz(id){
new text[192]
read_argv(1,text,191)
format(szOdp, charsmax(szOdp), "%s", text);
Zapisz(id);
}
stock show_text(message[])
{
ClearSyncHud(0, SyncHudObj);
new show = get_pcvar_num(style);
new color[10]
new r, g, b, c
get_pcvar_string(RGB, color, 9)
c = str_to_num(color)
r = c / 1000000
c %= 1000000
g = c / 1000
b = c % 1000
new Float:timeshow = get_pcvar_float(show_time);
new Float:X = get_pcvar_float(PosX);
new Float:Y = get_pcvar_float(PosY);
set_hudmessage(r, g, b, X, Y, 0, 6.0, timeshow)
if(show == 0)
ShowSyncHudMsg(0, SyncHudObj, "%s", message)
else if(show == 1)
client_print(0, print_center, "%s", message)
}
public awards(id)
{
new rannum = random_num(0,1);
new nick[34];
get_user_name(id, nick, 33)
switch(rannum)
{
case 0:
{
new minf = get_pcvar_num(minF); new maxf = get_pcvar_num(maxF);
new rnd = random_num(minf, maxf);
set_user_frags(id,get_user_frags(id) + rnd);
format(message, charsmax(message), "Poprawna odpowiedz! %s wygral +%i fragow!", nick, rnd);
show_text(message);
client_cmd(id, "mp3 play sound/xshoot/wygrana.mp3")
message_begin(MSG_ALL,85)
write_byte(id)
write_short(get_user_frags(id))
write_short(get_user_deaths(id))
write_short(0)
write_short(get_user_team(id))
message_end()
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
Za, zrobienie z góry dziękuje!
Pozdrawiam!