Gdy gracz uzbiera np. 8 monet i gdy ładuje się następna mapa to graczowi zostają dodane monety lub zostają odjęte lub czasem zostanie ta liczba która była na poprzedniej mapie. Więc czy mógłby ktoś zobaczyć ten kod co jest w nim źle ?
Spoiler
/* Script generated by Pawn Studio */
/*CHANGELOG:
* 1.0.0 - pierwsza dzialajaca wersja
* 1.0.1 - usuniecie bugu: kopiowanie monet z jednego nicku na drugi
* 1.0.2 - dodanie: natywow
* 1.0.3 - dodanie: typu zapisu
* 1.0.4 - usuniecie bugu: dostawanie monet za wpisanie kill (Podziekowania dla Szybcioor za wykrycie i dla Goliath za zalatanie)
* 1.0.5 - dodanie: nowe eventy za ktore zdobywa sie monety
* 1.0.6 - dodanie: cvaru - wlacznie/wylaczenie monet za TeamKill
* 1.0.7 - usuniecie bugu: brak monet za zabicie
* 1.0.8 - usuniecie bugu: brak monet za uratowanie/zabicie hosta*/
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <nvault>
#include <engine>
#include <cstrike>
#include <fun>
#include <tutor>
#include <hamsandwich>
#define PLUGIN "System Monet"
#define AUTHOR "kisiel96"
#define VERSION "1.0.8"
new monety[33];
new vault;
new nazwa_gracza[32][64],
identyfikator[32][64];
new cvar_coins_kill,
cvar_coins_ff;
native cod_set_user_coins(id, wartosc);
native cod_get_user_coins(id);
new coins_kill,
coins_ff;
new weapons[9] = { CSW_P228, CSW_ELITE, CSW_DEAGLE, CSW_M4A1, CSW_AK47, CSW_SCOUT, CSW_AWP, CSW_UMP45, CSW_P90 }
new weapons_name[9][] = { "P228", "ELITE", "DEAGLE", "M4A1", "AK47", "SCOUT", "AWP", "UMP45", "P90" }
new weapons_cost[9] = { 4, 4, 8, 20, 20, 10, 15, 10, 10 }
new bool:weapons_bought[33][9];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("DeathMsg", "DeathMsg", "a");
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
cvar_coins_ff = register_cvar("cod_coins_friendlyfire", "0");
cvar_coins_kill = register_cvar("cod_coins_kill", "1");
register_clcmd("say /sklep", "PremiumPoints")
register_clcmd("say_team /sklep", "PremiumPoints")
vault = nvault_open("monety");
tutorInit();
}
public plugin_precache(){
tutorPrecache()
}
public plugin_natives()
{
register_native("cod_get_user_coins", "PobierzMonety", 1);
register_native("cod_set_user_coins", "UstawMonety", 1);
}
public client_authorized(id)
{
UsunMonety(id)
get_user_name(id, nazwa_gracza[id], 63);
for(new i = 0; i < sizeof(weapons); i++)
{
weapons_bought[id][i] = false;
}
Wczytaj(id);
}
public client_disconnect(id)
{
for(new i = 0; i < sizeof(weapons); i++)
{
if(weapons_bought[id][i])
{
cod_take_weapon(id, weapons[i])
}
}
Zapisz(id);
}
public PremiumPoints(id)
{
new menupp = menu_create("Wybierz artykul:", "PremiumPoints_Handler")
menu_additem(menupp, "Kup Bron");
menu_additem(menupp, "Kup Dodatki");
menu_display(id, menupp);
}
public PremiumPoints_Handler(id, menupp, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menupp);
return PLUGIN_CONTINUE;
}
switch(item) {
case 0: {
BuyWeapon(id)
}
}
return PLUGIN_CONTINUE
}
public BuyWeapon(id)
{
new menubuyweapon = menu_create("Wybierz bron", "BuyWeapon_Handler");
new menubuyweaponcb = menu_makecallback("BuyWeapon_Callback");
new temp[255];
for(new i = 0; i < 9; i++)
{
formatex(temp, sizeof(temp), "\w%s \y[Koszt: %d]", weapons_name[i], weapons_cost[i]);
menu_additem(menubuyweapon, temp, "", 0, menubuyweaponcb);
}
menu_display(id, menubuyweapon);
}
public BuyWeapon_Handler(id, menubuyweapon, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menubuyweapon);
return PLUGIN_CONTINUE;
}
if(monety[id] >= weapons_cost[item])
{
cod_give_weapon(id, weapons[item]);
weapons_bought[id][item] = true;
monety[id] -= weapons_cost[item];
client_print(id, 3, "Kupiles %s za %d monet", weapons_name[item], weapons_cost[item]);
}
else
{
client_print(id, 3, "Nie masz wystarczajaco duzo monet");
}
return PLUGIN_CONTINUE;
}
public BuyWeapon_Callback(id, menubuyweapon, item)
{
if(monety[id] >= weapons_cost[item] && !weapons_bought[id][item])
{
return ITEM_ENABLED
}
return ITEM_DISABLED
}
/////RESET MONET/////
public UsunMonety(id)
monety[id] = 0;
/////ZLICZNIE MONET/////
public DeathMsg()
{
new kid = read_data(1);
new vid = read_data(2);
if(kid == vid)
return;
coins_ff = get_pcvar_num(cvar_coins_ff)
if(coins_ff == 0 && get_user_team(kid) == get_user_team(vid))
return;
coins_kill = get_pcvar_num(cvar_coins_kill);
monety[kid] += coins_kill;
}
/////NATYWY/////
public UstawMonety(id, wartosc)
{
monety[id] = wartosc
}
public PobierzMonety(id)
return monety[id];
////ZAPIS
public Zapisz(id)
{
new vaultkey[64], vaultdata[256];
format(vaultkey, 63, "%s-monety", identyfikator[id]);
format(vaultdata, 255, "%d#", monety[id]);
nvault_set(vault, vaultkey, vaultdata);
return PLUGIN_CONTINUE
}
public Wczytaj(id)
{
new vaultkey[64], vaultdata[256];
format(vaultkey, 63, "%s-monety", identyfikator[id]);
format(vaultdata, 255, "%d#", monety[id]);
nvault_get(vault, vaultkey, vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new monetytemp[33];
parse(vaultdata, monetytemp, 32);
monety[id] = str_to_num(monetytemp);
return PLUGIN_CONTINUE
}
public Odrodzenie(id)
{
for(new i = 0; i < sizeof(weapons); i++)
{
if(weapons_bought[id][i])
{
cod_take_weapon(id, weapons[i])
}
}
}