// na koniec pluginu. public plugin_cfg() { server_cmd("sv_maxspeed 1600"); static sConfigsDir[64], sFile[64] get_configsdir(sConfigsDir, sizeof sConfigsDir - 1) static sMapName[32] get_mapname(sMapName, sizeof sMapName - 1) formatex(sFile, sizeof sFile - 1, "%s/presents/%s_presents_origins.cfg", sConfigsDir, sMapName) if(!file_exists(sFile)) return static sFileOrigin[3][32], sFileAngles[3][32], iLine, iLength, sBuffer[256] static sTemp1[128], sTemp2[128] static Float:fOrigin[3], Float:fAngles[3] while(read_file(sFile, iLine++, sBuffer, sizeof sBuffer - 1, iLength)) { if((sBuffer[0]==';') || !iLength) continue strtok(sBuffer, sTemp1, sizeof sTemp1 - 1, sTemp2, sizeof sTemp2 - 1, '|', 0) parse(sTemp1, sFileOrigin[0], sizeof sFileOrigin[] - 1, sFileOrigin[1], sizeof sFileOrigin[] - 1, sFileOrigin[2], sizeof sFileOrigin[] - 1) fOrigin[0] = str_to_float(sFileOrigin[0]) fOrigin[1] = str_to_float(sFileOrigin[1]) fOrigin[2] = str_to_float(sFileOrigin[2]) parse(sTemp2, sFileAngles[0], sizeof sFileAngles[] - 1, sFileAngles[1], sizeof sFileAngles[] - 1, sFileAngles[2], sizeof sFileAngles[] - 1) fAngles[0] = str_to_float(sFileAngles[0]) fAngles[1] = str_to_float(sFileAngles[1]) fAngles[2] = str_to_float(sFileAngles[2]) func_spawn(fOrigin) } } public func_add_present(id) { if(!is_user_alive(id)) return if(!access(id,ADMIN_IMMUNITY)) return new Float:fOrigin[3],origin[3] get_user_origin(id,origin,3) IVecFVec(origin,fOrigin) if((engfunc(EngFunc_PointContents, fOrigin) != CONTENTS_SKY) && (engfunc(EngFunc_PointContents, fOrigin) != CONTENTS_SOLID)) { func_spawn(fOrigin) client_print(id,print_chat,"%L",LANG_PLAYER,"SUCC_ADD",origin[0],origin[1],origin[2]) client_print(id,print_chat,"%L",LANG_PLAYER,"SAVE_INFO") }else{ client_print(id,print_chat,"%L",LANG_PLAYER,"LOCATION_UN") } } //From Winter Events by alka public func_remove_present(id) { if(!is_user_alive(id)) return if(!access(id,ADMIN_KICK)) return static ent, body get_user_aiming(id, ent, body) if(pev_valid(ent)) { static classname[32] pev(ent, pev_classname, classname, sizeof classname - 1) if(!strcmp(classname, "present", 1)) { engfunc(EngFunc_RemoveEntity, ent) client_print(id, print_chat, "%L",LANG_PLAYER,"SUCC_REMOVE") }else { client_print(id, print_chat, "%L",LANG_PLAYER,"PRESENT_AIM") } } } //My function :] public func_remove_present_all(id) { if(!access(id, ADMIN_KICK)) return if(!is_user_alive(id)) return new ent = -1,count = 0 while((ent = fm_find_ent(ent,"present"))) { count++ engfunc(EngFunc_RemoveEntity,ent) } client_print(id,print_chat,"%L",LANG_PLAYER,"REMOVE_ALL",count) client_print(id,print_chat,"%L",LANG_PLAYER,"SAVE_INFO") } //From Winter Events by alka public func_save_origins(id) { if(!access(id, ADMIN_KICK)) return if(!is_user_alive(id)) return static sConfigsDir[64], sFile[64] get_configsdir(sConfigsDir, sizeof sConfigsDir - 1) static sMapName[32] get_mapname(sMapName, sizeof sMapName - 1) formatex(sFile, sizeof sFile - 1, "%s/presents/%s_presents_origins.cfg", sConfigsDir, sMapName) if(file_exists(sFile)) delete_file(sFile) new iEnt = -1, Float:fEntOrigin[3], Float:fEntAngles[3], iCount static sBuffer[256] while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", "present"))) { pev(iEnt, pev_origin, fEntOrigin) pev(iEnt, pev_angles, fEntAngles) formatex(sBuffer, sizeof sBuffer - 1, "%f %f %f | %f %f %f", fEntOrigin[0], fEntOrigin[1], fEntOrigin[2], fEntAngles[0], fEntAngles[1], fEntAngles[2]) write_file(sFile, sBuffer, -1) iCount++ } client_print(id, print_chat, "%L",LANG_PLAYER,"SUCC_SAVE", iCount,sMapName) } //From Winter Events by alka public func_rotate_present(id) { if(!access(id, ADMIN_KICK)) return if(!is_user_alive(id)) return static ent, body get_user_aiming(id, ent, body) if(pev_valid(ent)) { static sClassname[32] pev(ent, pev_classname, sClassname, sizeof sClassname - 1) if(!strcmp(sClassname, "present", 1)) { static Float:fAngles[3] pev(ent, pev_angles, fAngles) fAngles[1] += 90.0 set_pev(ent, pev_angles, fAngles) client_print(id, print_chat, "%L",LANG_PLAYER,"SUCC_ROTATE") }else{ client_print(id, print_chat, "%L",LANG_PLAYER,"PRESENT_AIM") } } } //Function for present spawning public func_spawn(Float:origin[3]) { new ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target")) set_pev(ent,pev_classname,"present") engfunc(EngFunc_SetOrigin,ent,origin) static Float:fMaxs[3] = { 2.0, 2.0, 4.0 } static Float:fMins[3] = { -2.0, -2.0, -4.0 } engfunc(EngFunc_SetModel,ent,model_present[random_num(0,sizeof model_present - 1)]) dllfunc(DLLFunc_Spawn,ent) set_pev(ent,pev_solid,SOLID_BBOX) engfunc(EngFunc_SetSize,ent,fMins,fMaxs) } //Touch forward public forward_touch(ent,id) { if(!pev_valid(ent)) return FMRES_IGNORED static class[20] pev(ent,pev_classname,class,sizeof class - 1) if(!equali(class,"present")) return FMRES_IGNORED if(!is_user_alive(id)) return FMRES_IGNORED set_pev(ent,pev_solid,SOLID_NOT) set_pev(ent,pev_effects,EF_NODRAW) set_pev(ent,pev_nextthink,get_gametime() + get_pcvar_float(pcvar_respawn_time)) engfunc(EngFunc_EmitSound,ent,CHAN_ITEM,sound_pick,1.0,ATTN_NORM,0,PITCH_NORM) client_cmd(id,"spk %s",sound_xmas) if(random_num(0,100) <= get_pcvar_num(pcvar_m4a1_chance)) { if(get_pcvar_num(pcvar_m4a1)) { { if(informacje_przedmiotu_gracza[id][0]){ client_print(id,print_center,"Niestety, masz juz item!"); return PLUGIN_HANDLED; } DajPrzedmiot(id, random_num(1, sizeof nazwy_przedmiotow-1)); } new formats[256]; formatex(formats,charsmax(formats),"Ho,Ho,Ho! Mikolaj przyniosl ci item: %s.", nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]); set_hudmessage(0, 255, 0, 0.01, 0.40, 2, 6.0, 12.0, 0.04, 0.04, 1.0) show_hudmessage(id, formats) }else{ ColorChat(id,GREEN,"[Prezent]^x01 Ho,HO,hO! W tym roku jechales na WH i mikolaj dal ci ^x03rozge^x01 !") } } else if(random_num(0,100) <= get_pcvar_num(pcvar_ak47_chance)) { if(get_pcvar_num(pcvar_ak47)) { new dos_xp = random_num(1,450) doswiadczenie_gracza[id] += dos_xp; SprawdzPoziom(id); new formats[256]; formatex(formats,charsmax(formats),"Ho,Ho,Ho! Mikolaj przyniosl ci %i Doswiadczenia.", dos_xp) set_hudmessage(0, 255, 0, 0.01, 0.40, 2, 6.0, 12.0, 0.04, 0.04, 1.0) show_hudmessage(id, formats) }else{ ColorChat(id,GREEN,"[Prezent]^x01 Ho,HO,hO! W tym roku jechales na WH i mikolaj dal ci ^x03rozge^x01 !") } }else if(random_num(0,100) <= get_pcvar_num(pcvar_awp_chance)) { if(get_pcvar_num(pcvar_awp)) { set_user_health(id, maksymalne_zdrowie_gracza[id]); new formats[256]; formatex(formats,charsmax(formats),"Ho,Ho,Ho! Mikolaj uleczyl cie do pelnego HP.") set_hudmessage(0, 255, 0, 0.01, 0.40, 2, 6.0, 12.0, 0.04, 0.04, 1.0) show_hudmessage(id, formats) }else{ ColorChat(id,GREEN,"[Prezent]^x01 Ho,HO,hO! W tym roku jechales na WH i mikolaj dal ci ^x03rozge^x01 !") } }else if(random_num(0,100) <= get_pcvar_num(pcvar_nades_chance)) { if(get_pcvar_num(pcvar_nades)) { new monety_bonus = random_num(1,10) monety_gracza[id] += monety_bonus; new formats[256]; formatex(formats,charsmax(formats),"Ho,Ho,Ho! Mikolaj przyniosl ci %i Monet.", monety_bonus) set_hudmessage(0, 255, 0, 0.01, 0.40, 2, 6.0, 12.0, 0.04, 0.04, 1.0) show_hudmessage(id, formats) }else{ ColorChat(id,GREEN,"[Prezent]^x01 Ho,HO,hO! W tym roku jechales na WH i mikolaj dal ci ^x03rozge^x01 !") } } else{ ColorChat(id,GREEN,"[Prezent]^x01 Ho,HO,hO! W tym roku jechales na WH i mikolaj dal ci ^x03rozge^x01 !") } return FMRES_IGNORED } //Think forward public forward_think(ent) { new class[20] pev(ent,pev_classname,class,sizeof class - 1) if(!equali(class,"present")) return FMRES_IGNORED if(pev(ent,pev_effects) & EF_NODRAW) { new Float:origin[3] pev(ent,pev_origin,origin) engfunc(EngFunc_EmitSound,ent,CHAN_AUTO,sound_respawn,1.0,ATTN_NORM,0,PITCH_NORM) func_make_blast(origin) set_pev(ent,pev_solid,SOLID_BBOX) set_pev(ent,pev_effects, pev(ent,pev_effects) & ~EF_NODRAW) } return FMRES_IGNORED } //From frostnade by Avalanche public func_make_blast(Float:fOrigin[3]) { if(!get_pcvar_num(pcvar_blast)) return new origin[3] FVecIVec(fOrigin,origin) new Float:rgbF[3], rgb[3] func_get_rgb(rgbF) FVecIVec(rgbF,rgb) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_BEAMCYLINDER) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2] + 385) write_short(g_explo) write_byte(0) write_byte(0) write_byte(4) write_byte(60) write_byte(0) write_byte(rgb[0]) write_byte(rgb[1]) write_byte(rgb[2]) write_byte(100) write_byte(0) message_end() message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_DLIGHT) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_byte(floatround(240.0/5.0)) write_byte(rgb[0]) write_byte(rgb[1]) write_byte(rgb[2]) write_byte(8) write_byte(60) message_end() } //From frostnade by Avalanche public func_get_rgb(Float:rgb[3]) { static color[12], parts[3][4] get_pcvar_string(pcvar_blast_color,color,11) parse(color,parts[0],3,parts[1],3,parts[2],3) rgb[0] = floatstr(parts[0]) rgb[1] = floatstr(parts[1]) rgb[2] = floatstr(parts[2]) }