/* ================================================================================================ / data 25-1-2013 diablo mod bazujacy na grze dota/dota 2 autor stachu for cs-hedzik.pl ================================================================================================= */ ///// iniclude #include #include #include #include #include #include #include #include #include #include #include #include #include #include //////////////////////// #define ILE_KLAS 3 ///////// sql new Handle:g_SqlTuple new g_sqlTable[64] = "dbmod_tables" new g_boolsqlOK=0 //////// enum { NONE = 0, Blood} new Race[ILE_KLAS][26] = { "None","Bloodseeker"} new race_heal[ILE_KLAS] = { 130,90 } new race_sila[ILE_KLAS] = {0,15} new race_zrecznosc[ILE_KLAS] = {0,7} new race_inteligencja[ILE_KLAS] = {0,5} //////// new player_lvl[33] new player_class[33] new asked_klass[33] new const LevelXP[127] = { 0,1500,5100,8700,9900 } public plugin_init() { ///// sql register_cvar("diablo_sql_host","localhost",FCVAR_PROTECTED) register_cvar("diablo_sql_user","root",FCVAR_PROTECTED) register_cvar("diablo_sql_pass","root",FCVAR_PROTECTED) register_cvar("diablo_sql_database","dbmod",FCVAR_PROTECTED) register_cvar("diablo_sql_table","dbmod_tablet",FCVAR_PROTECTED) set_task(1.0, "sql_start"); } public sql_start() { if(g_boolsqlOK) return; new host[128], user[64], pass[64], database[64]; get_cvar_string("diablo_sql_database", database, 63); get_cvar_string("diablo_sql_host", host, 127); get_cvar_string("diablo_sql_user", user, 63); get_cvar_string("diablo_sql_pass", pass, 63); g_SqlTuple = SQL_MakeDbTuple(host, user, pass, database); get_cvar_string("diablo_sql_table", g_sqlTable, 63); new q_command[512]; formatex(q_command, 511, "CREATE TABLE IF NOT EXISTS `%s` (`zapis` VARCHAR(48),`klasa` INT(2),`lvl` INT(3) DEFAULT 1,`exp` INT(9),`sila` INT(3), `int` INT(3) ,`zre` INT(3),`misja` INT(3),`kamienie` INT(5), `postep` INT(3),`art` INT(3),`wyt` INT(3) DEFAULT 0) DEFAULT CHARSET `utf8` COLLATE `utf8_general_ci`", g_sqlTable); SQL_ThreadQuery(g_SqlTuple, "TableHandle", q_command); } ///////////// public TableHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("diablo.log", "Could not connect to SQL database."); return PLUGIN_CONTINUE; } if(FailState == TQUERY_QUERY_FAILED) { log_to_file("diablo.log", "Table Query failed."); return PLUGIN_CONTINUE; } if(Errcode) { log_to_file("diablo.log", "Error on Table query: %s", Error); return PLUGIN_CONTINUE; } g_boolsqlOK = 1; look_for_none() return PLUGIN_CONTINUE; } ///////////////// public look_for_none() { for(new i=1;i *** Create %s ***", sprawdz_co_ma(id,name), Race[class]); formatex(q_command, 511, "INSERT INTO `%s` (`nick`,`klasa`,`lvl`,`exp`) VALUES ('%s','%i',1,1)", g_sqlTable, sprawdz_co_ma(id,name), class); SQL_ThreadQuery(g_SqlTuple, "create_klass_handle", q_command, data, 2); database_user_created[id] = 1; } } else sql_start(); } public select_class(id) { if(is_user_bot(id)) return PLUGIN_HANDLED; asked_klass[id] = 0 new MyMenu=menu_create("Wybierz Strone","select_class_menu"); menu_additem(MyMenu,"BETA","",0) menu_setprop(MyMenu,MPROP_EXITNAME,"Wyjscie"); menu_setprop(MyMenu,MPROP_PERPAGE,7) menu_display(id, MyMenu,0); return PLUGIN_HANDLED; } public select_class_menu(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: strona1(id) } return PLUGIN_HANDLED; } public strona1(id) { new text1[128] format(text1, 127,"BloodSeeker Lev :%i",player_class_lvl[id][1]) new MyMenu=menu_create("Wybierz","select_strona3"); menu_additem(MyMenu,text1,"",0,_) menu_setprop(MyMenu,MPROP_EXITNAME,"Wroc"); menu_setprop(MyMenu,MPROP_PERPAGE,7) menu_display(id, MyMenu,0); return PLUGIN_HANDLED; } public select_strona3(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu); select_class(id) return PLUGIN_HANDLED; } switch(item) { case 0:{ player_class[id] = Blood LoadXP(id, player_class[id]) } } otwarte_menu[id] = false return PLUGIN_HANDLED; } ///////////////////////////////////////////////////////// ///////////////// public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_alive(this) || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker)){ return HAM_IGNORED; } damage*=krytyk(idattacker,this) item_take_dolicz(idattacker,this,damage,weapon) if(damagebits & DMG_ENERGYBEAM||damagebits & DMG_SHOCK){ pokaz_obr(idattacker,damage) } if(damage>175) player_dmg[idattacker]+=damage/2.0 else player_dmg[idattacker]+=damage dmg_exp(idattacker) //////inne//////// if (HasFlag(idattacker,Flag_Ignite)){ RemoveFlag(idattacker,Flag_Ignite) } SetHamParamFloat(4, damage); return HAM_IGNORED; } new Float:tablica_krytyczne[33][2] //////// [0] - szansa na krytyk np = 0.01 = 10% //////// [1] - wielkosc krytyka stock krytyk(at,id) { if(tablica_krytyczne[at][0]<0) return 1.0 if(random_float(1*tablica_krytyczne[at][0],1)==1 return tablica_krytyczne[at][1] }