#include // All Animations and Special Actions 1.5 by OKStyle #define MAX_ANIMATION_INDEX 1812 #define USE_SEX_FIX_ANIM 0 #define USE_CUSTOM_ANIM 0 #define DLG_ANIMATIONS 0 public OnPlayerSpawn(playerid) { if(GetPVarInt(playerid, !"Animations_Preloaded")) return 1; for(new i = 1, animlib[32], tmplib[32] = !"NULL", animname[32]; i <= MAX_ANIMATION_INDEX; i++) // Preload Animlibs { GetAnimationName(i, animlib, sizeof(animlib), animname, sizeof(animname)); if(!strcmp(tmplib, animlib)) continue; tmplib = animlib; ApplyAnimation(playerid, animlib, !"null", 4.1, 0, 1, 1, 1, 1, 1); } ApplyAnimation(playerid, !"BLOWJOBZ", !"null", 4.1, 0, 1, 1, 1, 1, 1); ApplyAnimation(playerid, !"SNM", !"null", 4.1, 0, 1, 1, 1, 1, 1); #if USE_SEX_FIX_ANIM == 1 ApplyAnimation(playerid, !"SEX_Fix", !"null", 4.1, 0, 1, 1, 1, 1, 1); #endif #if USE_CUSTOM_ANIM == 1 ApplyAnimation(playerid, !"SEX", !"null", 4.1, 0, 1, 1, 1, 1, 1); // change SEX for your custom animlib (parkour etc.) #endif SetPVarInt(playerid, !"Animations_Preloaded", 1); return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(newkeys & KEY_LOOK_BEHIND) { ShowPlayerDialog(playerid, DLG_ANIMATIONS, DIALOG_STYLE_MSGBOX, !"Animations", !"All Animations and Special Actions v1.5 by OKStyle\n\ Made: 13.08.2008 & Updated 09.01.2019\n\ Thanks: PatrickW, 009, Wooz1e, Ym[0]n, Daniel_Cortez,\n\ SoNikMells, Southclaw, VEGETA99999, D3V1LL0P3R\n\n\ List of all animations and special actions: press key \"H\"", !"Cancel", !""); return 1; } else if(newkeys & KEY_CTRL_BACK) { new animdlg[1280]; for(new i = 1, animlib[32], animname[32]; i <= MAX_ANIMATION_INDEX; i++) { GetAnimationName(i, animlib, sizeof(animlib), animname, sizeof(animname)); if(strfind(animdlg, animlib) == -1) { strcat(animdlg, animlib); strcat(animdlg, !"\n"); } } strcat(animdlg, !"BLOWJOBZ\nSNM\nSEX\nSPECIAL ACTIONS"); #if USE_CUSTOM_ANIM == 1 strcat(animdlg, !"SEX"); // change SEX for your custom animlib #endif ShowPlayerDialog(playerid, DLG_ANIMATIONS + 1, DIALOG_STYLE_LIST, !"Animations", animdlg, !"Select", !"Cancel"); return 1; } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DLG_ANIMATIONS: return 1; case DLG_ANIMATIONS + 1: { if(!response) return 1; new animdlg[512]; if(!strcmp(inputtext, !"SPECIAL ACTIONS")) // Special Actions { static const specact[20][] = { !"SPECIAL_ACTION_NONE", !"SPECIAL_ACTION_DUCK", !"SPECIAL_ACTION_USEJETPACK", !"SPECIAL_ACTION_ENTER_VEHICLE", !"SPECIAL_ACTION_EXIT_VEHICLE", !"SPECIAL_ACTION_DANCE1", !"SPECIAL_ACTION_DANCE2", !"SPECIAL_ACTION_DANCE3", !"SPECIAL_ACTION_DANCE4", !"SPECIAL_ACTION_HANDSUP", !"SPECIAL_ACTION_USECELLPHONE", !"SPECIAL_ACTION_SITTING", !"SPECIAL_ACTION_STOPUSECELLPHONE", !"SPECIAL_ACTION_DRINK_BEER", !"SPECIAL_ACTION_SMOKE_CIGGY", !"SPECIAL_ACTION_DRINK_WINE", !"SPECIAL_ACTION_DRINK_SPRUNK", !"SPECIAL_ACTION_CUFFED", !"SPECIAL_ACTION_CARRY", !"SPECIAL_ACTION_PISSING" }; strcat(animdlg, !"Action Name\n"); for(new i; i < sizeof(specact); i++) { strcat(animdlg, specact[i]); strcat(animdlg, !"\n"); } } else if(!strcmp(inputtext, !"BLOWJOBZ")) // Haven't index { static const animbj[18][17] = { !"BJ_Car_End_P", !"BJ_Car_End_W", !"BJ_Car_Loop_P", !"BJ_Car_Loop_W", !"BJ_Car_Start_P", !"BJ_Car_Start_W", !"BJ_Couch_End_P", !"BJ_Couch_End_W", !"BJ_Couch_Loop_P", !"BJ_Couch_Loop_W", !"BJ_Couch_Start_P", !"BJ_Couch_Start_W", !"BJ_Stand_End_P", !"BJ_Stand_End_W,", !"BJ_Stand_Loop_P", !"BJ_Stand_Loop_W", !"BJ_Stand_Start_P", !"BJ_Stand_Start_W" }; strcat(animdlg, !"Name\n"); for(new i; i < sizeof(animbj); i++) { strcat(animdlg, animbj[i]); strcat(animdlg, !"\n"); } } else if(!strcmp(inputtext, !"SNM")) // Haven't index { static const animsnm[22][22] = { !"SnM_Caned_Idle_P", !"SnM_Caned_Idle_W", !"SnM_Caned_P", !"SnM_Caned_W", !"SnM_Cane_Idle_P", !"SnM_Cane_Idle_W", !"SnM_Cane_P", !"SnM_Cane_W", !"SpankedP", !"SpankedW", !"Spanked_IdleP", !"Spanked_IdleW", !"SpankingP", !"SpankingW", !"Spanking_endP", !"Spanking_endW", !"Spanking_IdleP", !"Spanking_IdleW", !"Spanking_SittingIdleP", !"Spanking_SittingIdleW", !"Spanking_SittingP", !"Spanking_SittingW" }; strcat(animdlg, !"Name\n"); for(new i; i < sizeof(animsnm); i++) { strcat(animdlg, animsnm[i]); strcat(animdlg, !"\n"); } } #if USE_SEX_FIX_ANIM == 1 else if(!strcmp(inputtext, !"SEX")) // Blocked in SA-MP { static const animsexfix[20][13] = { !"SEX_1to2_P", !"SEX_1to2_W", !"SEX_1_Cum_P", !"SEX_1_Cum_W", !"SEX_1_Fail_P", !"SEX_1_Fail_W", !"SEX_1_P", !"SEX_1_W", "SEX_2to3_P", !"SEX_2to3_W", !"SEX_2_Fail_P", !"SEX_2_Fail_W", !"SEX_2_P", !"SEX_2_W", !"SEX_3to1_P", !"SEX_3to1_W", !"SEX_3_Fail_P", !"SEX_3_Fail_W", !"SEX_3_P", !"SEX_3_W" }; strcat(animdlg, !"Name\n"); for(new i; i < sizeof(animsexfix); i++) { strcat(animdlg, animsexfix[i]); strcat(animdlg, !"\n"); } } #endif #if USE_CUSTOM_ANIM == 1 else if(!strcmp(inputtext, !"SEX")) // change SEX for your custom animlib { static const animsex[20][13] = { // change animations to your custom animnames !"SEX_1to2_P", !"SEX_1to2_W", !"SEX_1_Cum_P", !"SEX_1_Cum_W", !"SEX_1_Fail_P", !"SEX_1_Fail_W", !"SEX_1_P", !"SEX_1_W", "SEX_2to3_P", !"SEX_2to3_W", !"SEX_2_Fail_P", !"SEX_2_Fail_W", !"SEX_2_P", !"SEX_2_W", !"SEX_3to1_P", !"SEX_3to1_W", !"SEX_3_Fail_P", !"SEX_3_Fail_W", !"SEX_3_P", !"SEX_3_W" }; strcat(animdlg, !"Name\n"); for(new i; i < sizeof(animsex); i++) { strcat(animdlg, animsex[i]); strcat(animdlg, !"\n"); } } #endif else // Have index { strcat(animdlg, !"Index\tName\n"); for(new i = 1, animlib[32], animname[32]; i <= MAX_ANIMATION_INDEX; i++) { GetAnimationName(i, animlib, sizeof(animlib), animname, sizeof(animname)); if(!strcmp(animlib, inputtext)) { format(animname, sizeof(animname), "%d\t%s\n", i, animname); strcat(animdlg, animname); } } } ShowPlayerDialog(playerid, DLG_ANIMATIONS + 2, DIALOG_STYLE_TABLIST_HEADERS, !"Animations", animdlg, !"Select", !"Cancel"); return 1; } case DLG_ANIMATIONS + 2: { if(!response) return 1; if(strfind(inputtext, !"SPECIAL_ACTION_") != -1) { if(8 < listitem < 13) return SetPlayerSpecialAction(playerid, listitem + 1); else if(13 <= listitem < 19) return SetPlayerSpecialAction(playerid, listitem + 7); else if(listitem == 19) return SetPlayerSpecialAction(playerid, 68); else SetPlayerSpecialAction(playerid, listitem); return 1; } else if(strfind(inputtext, !"BJ_") != -1) return ApplyAnimation(playerid, !"BLOWJOBZ", inputtext, 4.1, 0, 1, 1, 1, 1, 1); else if(strfind(inputtext, !"SNM_") != -1 || strfind(inputtext, !"Spank") != -1) return ApplyAnimation(playerid, !"SNM", inputtext, 4.1, 0, 1, 1, 1, 1, 1); #if USE_SEX_FIX_ANIM == 1 else if(strfind(inputtext, !"SEX_") != -1) return ApplyAnimation(playerid, !"SEX_Fix", inputtext, 4.1, 0, 1, 1, 1, 1, 1); #endif #if USE_CUSTOM_ANIM == 1 else if(strfind(inputtext, !"SEX") != -1) return ApplyAnimation(playerid, !"SEX", inputtext, 4.1, 0, 1, 1, 1, 1, 1); // Change SEX to your custom animlib #endif else { new animlib[32], animname[32]; GetAnimationName(strval(inputtext), animlib, sizeof(animlib), animname, sizeof(animname)); ApplyAnimation(playerid, animlib, animname, 4.1, 0, 1, 1, 1, 1, 1); } return 1; } } return 0; }