Otóż nie działają mi misje na jb, silnik cypisa
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <jailbreak>
#include <cstrike>
#include <colorchat>
#include <nvault>
#define PLUGIN "Zadania JB"
#define VERSION "1.0"
#define AUTHOR "cypis"
#define PRZEZ_RUNDE (1<<1)
#define PRZEZ_MAPE (1<<2)
#define ZAPISZ (1<<3)
#define WYKONANE 99999
#define LIMIT_GRACZY 1
enum DANE
{
ZADANIE[64],
LIMIT,
FLAGI
}
new zadania[][DANE] =
{
{"Zabij 20 CT w ciagu mapy", 20, PRZEZ_MAPE}, //0
{"Zdobadz 10 zyczen w ciagu mapy", 10, PRZEZ_MAPE}, //1
{"Zabij 5 graczy przez runde", 5, PRZEZ_RUNDE}, //2
{"Badz poszukiwany 10 razy w ciagu mapy", 10, PRZEZ_MAPE}, //3
{"Przegraj 3000 minut na serwerze", 3000, ZAPISZ}, //4
{"Zabij ogolnie 200 CT", 200, ZAPISZ}, //5
{"Ukradnij bron CT i zabij 3 CT w ciagu rundy", 3, PRZEZ_RUNDE} //6
}
new vault;
new postep_gracza[33][sizeof zadania];
new user_get_weapon[33];
new bool:zyczenie;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
register_event("HLTV", "KoniecRundy", "a", "1=0", "2=0");
register_message(SVC_INTERMISSION, "KoniecMapy");
register_clcmd("say /misje", "MenuZadania");
register_clcmd("say /zadania", "MenuZadania");
vault = nvault_open("zadania");
}
public MenuZadania(id)
{
new cb = menu_makecallback("CallbackZadania");
new menu = menu_create("Zadania:", "HandleZadania");
new szTemp[128], szInt[10];
for(new i=0; i < sizeof zadania; i++)
{
num_to_str(i, szInt, 9);
formatex(szTemp, 127, "%s [%i/%i]", zadania[i][ZADANIE], postep_gracza[id][i] == WYKONANE? zadania[i][LIMIT]: min(postep_gracza[id][i], zadania[i][LIMIT]), zadania[i][LIMIT]);
menu_additem(menu, szTemp, szInt, .callback=cb);
}
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public CallbackZadania(id, menu, item)
{
if(get_playersnum() < LIMIT_GRACZY)
return ITEM_DISABLED;
new info[10], i, callback;
menu_item_getinfo(menu, item, i, info, 9, _, _, callback);
i = str_to_num(info);
if(postep_gracza[id][i] >= zadania[i][LIMIT] || postep_gracza[id][i] == WYKONANE)
return ITEM_DISABLED;
return ITEM_ENABLED;
}
public HandleZadania(id, menu, item)
{
if(item == MENU_EXIT)
return;
MenuZadania(id);
}
public OnLastPrisonerShowWish(id)
{
if(get_playersnum() < LIMIT_GRACZY)
return;
postep_gracza[id][1]++;
zyczenie = true;
}
public OnPrisonerWanted(id)
{
if(get_playersnum() < LIMIT_GRACZY)
return;
postep_gracza[id][3]++;
}
public OnPrisonerTakeWeapon(id, weapon)
{
if(zyczenie)
return;
user_get_weapon[id] = weapon;
}
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(zyczenie)
return HAM_IGNORED;
if(get_playersnum() < LIMIT_GRACZY)
return HAM_IGNORED;
if(!is_user_connected(id) || !is_user_connected(attacker) || get_user_team(attacker) != 1 || id == attacker)
return HAM_IGNORED;
if(get_user_team(id) == 2)
{
if(user_get_weapon[attacker] && user_get_weapon[attacker] == get_user_weapon(attacker))
{
postep_gracza[attacker][6]++;
}
postep_gracza[attacker][5]++;
postep_gracza[attacker][0]++;
SprawdzPostep(attacker, 5);
}
postep_gracza[attacker][2]++;
return HAM_IGNORED;
}
public KoniecMapy()
{
for(new i=0; i < sizeof zadania; i++)
{
if(!(zadania[i][FLAGI] & PRZEZ_MAPE))
continue;
for(new id=1; id<=32; id++)
{
if(!is_user_connected(id))
continue;
SprawdzPostep(id, i);
if(postep_gracza[id][i] != WYKONANE)
postep_gracza[id][i] = 0;
}
}
}
public KoniecRundy()
{
for(new i=0; i < sizeof zadania; i++)
{
if(!(zadania[i][FLAGI] & PRZEZ_RUNDE))
continue
for(new id=1; id<=32; id++)
{
if(!is_user_connected(id))
continue;
SprawdzPostep(id, i);
user_get_weapon[id] = 0;
if(postep_gracza[id][i] != WYKONANE)
postep_gracza[id][i] = 0;
}
}
zyczenie = false;
}
new nazwa_gracza[33][64];
public client_putinserver(id)
{
get_user_name(id, nazwa_gracza[id], 63);
WczytajPostep(id);
}
public client_disconnect(id)
{
if(get_playersnum(1) < 4)
return;
postep_gracza[id][4] += get_user_time(id, 1)/60;
SprawdzPostep(id, 4);
}
public WczytajPostep(id)
{
new vaultkey[96], vaultdata[10], bool:wykonal = true;
for(new i=0; i < sizeof zadania; i++)
{
format(vaultkey, 95,"nick-%s-zadanie-%i", nazwa_gracza[id], i);
nvault_get(vault, vaultkey, vaultdata, 9);
postep_gracza[id][i] = str_to_num(vaultdata);
if(postep_gracza[id][i] >= zadania[i][LIMIT])
postep_gracza[id][i] = WYKONANE;
else
wykonal = false;
}
if(wykonal)
{
new flagi = get_user_flags(id);
flagi |= ADMIN_LEVEL_H;
set_user_flags(id, flagi);
}
}
public SprawdzPostep(id, zadanie)
{
if(!zadanie)
{
for(new i=0; i < sizeof zadania; i++)
{
if(postep_gracza[id][i] == WYKONANE)
continue;
if(zadania[i][LIMIT] <= postep_gracza[id][i])
{
postep_gracza[id][i] = WYKONANE;
ZapisDane(id, i, postep_gracza[id][i]);
client_print(id, 3, "[ZADANIA] Wykonales zadanie ^"%s^"", zadania[i][ZADANIE]);
}
else if(zadania[i][FLAGI] & ZAPISZ)
{
ZapisDane(id, i, postep_gracza[id][i]);
}
}
return;
}
if(postep_gracza[id][zadanie] == WYKONANE)
return;
if(zadania[zadanie][LIMIT] <= postep_gracza[id][zadanie])
{
postep_gracza[id][zadanie] = WYKONANE;
ZapisDane(id, zadanie, postep_gracza[id][zadanie]);
client_print(id, 3, "[ZADANIA] Wykonales zadanie ^"%s^"", zadania[zadanie][ZADANIE]);
}
else if(zadania[zadanie][FLAGI] & ZAPISZ)
{
ZapisDane(id, zadanie, postep_gracza[id][zadanie]);
}
}
public ZapisDane(id, zadanie, postep)
{
new vaultkey[96], vaultdata[10];
format(vaultkey, 95,"nick-%s-zadanie-%i", nazwa_gracza[id], zadanie);
num_to_str(postep, vaultdata, 9);
nvault_set(vault, vaultkey, vaultdata);
}


Dodatki SourceMod




Moja zawartość
Mężczyzna