Co do prośby o free odznakę na komendę /free:
1. Wklej to do notatnika:
#include <amxmodx>
#include <battlefield>
#include <hamsandwich>
#include <nvault>
#pragma semicolon 1
#define MAX 32
new name[ MAX + 1 ][ MAX ],
plik_vault,
vaultkey[ 64 ],
vaultdata[ 256 ],
gPcvarPoziom;
new bool:wziol_odznake[ MAX + 1 ],
bool:pokaz_menu[ MAX + 1 ];
public plugin_init( ) {
register_plugin( "Darmowa Odznaka BF2", "1.0", "MisieQ" );
plik_vault = nvault_open( "DarmowaOdznaka" );
gPcvarPoziom = register_cvar( "bf2_do_poziom", "3" );
register_clcmd("say /free","DajOdznake");
}
public plugin_end( ) nvault_close( plik_vault );
public client_putinserver( id ) {
wziol_odznake[ id ] = false;
pokaz_menu[ id ] = false;
name[ id ] = "";
if( is_user_connected( id ) ){
get_user_name( id , name[ id ], 31 );
wczytaj_odznake( id );
if( wziol_odznake[ id ] )
pokaz_menu[ id ] = true;
}
}
public DajOdznake(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
if( !pokaz_menu[ id ] )
MenuOdznak( id );
return PLUGIN_CONTINUE;
}
public client_disconnect( id ) {
zapisz_odznake( id );
wziol_odznake[ id ] = false;
pokaz_menu[ id ] = false;
name[ id ] = "";
}
public MenuOdznak( id ) {
new menu = menu_create( "\wDarmowa Odznka:", "MenuOdznak_Handle" );
menu_additem( menu, "HP Za Zadanie Obrazen Nozem", "0", 0 );
menu_additem( menu, "Dodatkowa kasa co runde", "1", 0 );
menu_additem( menu, "Dodatkowe HP na Start", "2", 0 );
menu_additem( menu, "Darmowa Snajperka na Start", "3", 0 );
menu_additem( menu, "Dodatkowe Obrazenia", "4", 0 );
menu_additem( menu, "Wieksze Obrazenia Granatem", "5", 0 );
menu_additem( menu, "Niewidzialnosc na Nozu", "6", 0 );
menu_additem( menu, "Buty Szybkosci", "7", 0 );
menu_setprop( menu, MPROP_PERPAGE, 0 );
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
menu_setprop( menu, MPROP_EXITNAME, "Wyjscie" );
menu_display( id, menu, 0 );
return PLUGIN_CONTINUE;
}
public MenuOdznak_Handle( id, menu, item ) {
new data[ 6 ], iName[ 64 ], acces, callback;
menu_item_getinfo( menu, item, acces, data, sizeof data - 1, iName, sizeof iName - 1, callback );
if( item == MENU_EXIT ) {
pokaz_menu[ id ] = false;
wziol_odznake[ id ] = false;
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new key = str_to_num( data );
switch( key ) {
case 0: {
daj_odznake( id, 0 );
menu_destroy( menu );
}
case 1: {
daj_odznake( id, 1 );
menu_destroy( menu );
}
case 2: {
daj_odznake( id, 2 );
menu_destroy( menu );
}
case 3: {
daj_odznake( id, 3 );
menu_destroy( menu );
}
case 4: {
daj_odznake( id, 4 );
menu_destroy( menu );
}
case 5: {
daj_odznake( id, 5 );
menu_destroy( menu );
}
case 6: {
daj_odznake( id, 6 );
menu_destroy( menu );
}
case 7: {
daj_odznake( id, 7 );
menu_destroy( menu );
}
case 8: {
daj_odznake( id, 8 );
menu_destroy( menu );
}
}
return PLUGIN_HANDLED;
}
public daj_odznake( id, numer ) {
bf2_set_user_badge( id, numer, get_pcvar_num( gPcvarPoziom ) );
pokaz_menu[ id ] = true;
wziol_odznake[ id ] = true;
}
public wczytaj_odznake( id ) {
format( vaultkey, sizeof vaultkey - 1, "%s-m-", name[ id ] );
format( vaultdata, sizeof vaultdata - 1,"%d",wziol_odznake[ id ] );
nvault_get( plik_vault, vaultkey, vaultdata, sizeof vaultdata - 1 );
new wartosc[ 6 ];
parse( vaultdata,wartosc, 5 );
if( str_to_num( wartosc ) )
wziol_odznake[ id ] = true;
}
public zapisz_odznake( id ){
if( wziol_odznake[ id ] ){
format( vaultkey, sizeof vaultkey - 1, "%s-m-", name[ id ] ) ;
format( vaultdata, sizeof vaultdata - 1, "1" );
nvault_set( plik_vault, vaultkey, vaultdata );
}
}
2. Zapisz jako "darmowa_odznaka.sma" (pamiętaj by w "zapisz jako typ" ustawić "wszystkie pliki").
Powinno wszystko działać poprawnie,
Pozdrawiam