//------------------------------------------------- // // Generic Special Actions And Anims // kyeman 2007 // //------------------------------------------------- #include #include #include #pragma tabsize 0 #include "../include/gl_common.inc" new gPlayerUsingLoopingAnim[MAX_PLAYERS]; new gPlayerAnimLibsPreloaded[MAX_PLAYERS]; new Text:txtAnimHelper; //------------------------------------------------- OnePlayAnim(playerid,animlib[],animname[], Float:Speed, looping, lockx, locky, lockz, lp) { ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp); } //------------------------------------------------- LoopingAnim(playerid,animlib[],animname[], Float:Speed, looping, lockx, locky, lockz, lp) { gPlayerUsingLoopingAnim[playerid] = 1; ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp); TextDrawShowForPlayer(playerid,txtAnimHelper); } //------------------------------------------------- StopLoopingAnim(playerid) { gPlayerUsingLoopingAnim[playerid] = 0; ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0); } //------------------------------------------------- PreloadAnimLib(playerid, animlib[]) { ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0); } //------------------------------------------------- // ********** CALLBACKS ********** public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(!gPlayerUsingLoopingAnim[playerid]) return; if(IsKeyJustDown(KEY_SPRINT,newkeys,oldkeys)) { StopLoopingAnim(playerid); TextDrawHideForPlayer(playerid,txtAnimHelper); } } //------------------------------------------------ public OnPlayerDeath(playerid, killerid, reason) { // if they die whilst performing a looping anim, we should reset the state if(gPlayerUsingLoopingAnim[playerid]) { gPlayerUsingLoopingAnim[playerid] = 0; TextDrawHideForPlayer(playerid,txtAnimHelper); } return 1; } //------------------------------------------------- public OnPlayerSpawn(playerid) { if(!gPlayerAnimLibsPreloaded[playerid]) { PreloadAnimLib(playerid,"BOMBER"); PreloadAnimLib(playerid,"RAPPING"); PreloadAnimLib(playerid,"SHOP"); PreloadAnimLib(playerid,"BEACH"); PreloadAnimLib(playerid,"SMOKING"); PreloadAnimLib(playerid,"FOOD"); PreloadAnimLib(playerid,"ON_LOOKERS"); PreloadAnimLib(playerid,"DEALER"); PreloadAnimLib(playerid,"CRACK"); PreloadAnimLib(playerid,"CARRY"); PreloadAnimLib(playerid,"COP_AMBIENT"); PreloadAnimLib(playerid,"PARK"); PreloadAnimLib(playerid,"INT_HOUSE"); PreloadAnimLib(playerid,"FOOD"); gPlayerAnimLibsPreloaded[playerid] = 1; } return 1; } //------------------------------------------------- public OnPlayerConnect(playerid) { gPlayerUsingLoopingAnim[playerid] = 0; gPlayerAnimLibsPreloaded[playerid] = 0; return 1; } //------------------------------------------------- public OnFilterScriptInit() { // Init our text display txtAnimHelper = TextDrawCreate(610.0, 400.0, "~r~~k~~PED_SPRINT~ ~w~to stop the animation"); TextDrawUseBox(txtAnimHelper, 0); TextDrawFont(txtAnimHelper, 2); TextDrawSetShadow(txtAnimHelper,0); // no shadow TextDrawSetOutline(txtAnimHelper,1); // thickness 1 TextDrawBackgroundColor(txtAnimHelper,0x000000FF); TextDrawColor(txtAnimHelper,0xFFFFFFFF); TextDrawAlignment(txtAnimHelper,3); // align right } //------------------------------------------------- public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256]; new idx; new dancestyle; cmd = strtok(cmdtext, idx); if(strcmp(cmd,"/animlist",true)==0) { SendClientMessage(playerid,0xAFAFAFAA,"Available Animations:"); SendClientMessage(playerid,0xAFAFAFAA,"/handsup /drunk /bomb /getarrested /laugh /lookout /robman"); SendClientMessage(playerid,0xAFAFAFAA,"/crossarms /lay /hide /vomit /eat /wave /taichi"); SendClientMessage(playerid,0xAFAFAFAA,"/deal /crack /smokem /smokef /groundsit /chat /dance /f**ku"); } if(strcmp(cmd, "/amcuffed", true) == 0) { // note: the cuffs have not been scaled for all player models SetPlayerAttachedObject(playerid,8,19418,6,-0.031999,0.024000,-0.024000,-7.900000,-32.000011,-72.299987,1.115998,1.322000,1.406000); SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED); return 1; } if(strcmp(cmd, "/uncuffme", true) == 0) { if(IsPlayerAttachedObjectSlotUsed(playerid, 8)) { RemovePlayerAttachedObject(playerid, 8); } SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); return 1; } // We don't handle anything else after this that can be used in vehicles if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) { return 0; } // HANDSUP if(strcmp(cmd, "/handsup", true) == 0) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP); return 1; } // CELLPHONE IN if(strcmp(cmd, "/cellin", true) == 0) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE); return 1; } // CELLPHONE OUT if(strcmp(cmd, "/cellout", true) == 0) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE); return 1; } // Drunk if(strcmp(cmd, "/drunk", true) == 0) { LoopingAnim(playerid,"PED","WALK_DRUNK",4.0,1,1,1,1,0); return 1; } // Place a Bomb if (strcmp("/bomb", cmdtext, true) == 0) { ClearAnimations(playerid); OnePlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Place Bomb return 1; } // Police Arrest if (strcmp("/getarrested", cmdtext, true, 7) == 0) { LoopingAnim(playerid,"ped", "ARRESTgun", 4.0, 0, 1, 1, 1, -1); // Gun Arrest return 1; } // Laugh if (strcmp("/laugh", cmdtext, true) == 0) { OnePlayAnim(playerid, "RAPPING", "Laugh_01", 4.0, 0, 0, 0, 0, 0); // Laugh return 1; } // Rob Lookout if (strcmp("/lookout", cmdtext, true) == 0) { OnePlayAnim(playerid, "SHOP", "ROB_Shifty", 4.0, 0, 0, 0, 0, 0); // Rob Lookout return 1; } // Rob Threat if (strcmp("/robman", cmdtext, true) == 0) { LoopingAnim(playerid, "SHOP", "ROB_Loop_Threat", 4.0, 1, 0, 0, 0, 0); // Rob return 1; } // Arms crossed if (strcmp("/crossarms", cmdtext, true) == 0) { LoopingAnim(playerid, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1); // Arms crossed return 1; } // Lay Down if (strcmp("/lay", cmdtext, true, 6) == 0) { LoopingAnim(playerid,"BEACH", "bather", 4.0, 1, 0, 0, 0, 0); // Lay down return 1; } // Take Cover if (strcmp("/hide", cmdtext, true, 3) == 0) { LoopingAnim(playerid, "ped", "cower", 3.0, 1, 0, 0, 0, 0); // Taking Cover return 1; } // Vomit if (strcmp("/vomit", cmdtext, true) == 0) { OnePlayAnim(playerid, "FOOD", "EAT_Vomit_P", 3.0, 0, 0, 0, 0, 0); // Vomit BAH! return 1; } // Eat Burger if (strcmp("/eat", cmdtext, true) == 0) { OnePlayAnim(playerid, "FOOD", "EAT_Burger", 3.0, 0, 0, 0, 0, 0); // Eat Burger return 1; } // Wave if (strcmp("/wave", cmdtext, true) == 0) { LoopingAnim(playerid, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 0, 0); // Wave return 1; } // Slap Ass if (strcmp("/slapass", cmdtext, true) == 0) { OnePlayAnim(playerid, "SWEET", "sweet_ass_slap", 4.0, 0, 0, 0, 0, 0); // Ass Slapping return 1; } // Dealer if (strcmp("/deal", cmdtext, true) == 0) { OnePlayAnim(playerid, "DEALER", "DEALER_DEAL", 4.0, 0, 0, 0, 0, 0); // Deal Drugs return 1; } // Crack Dieing if (strcmp("/crack", cmdtext, true, 6) == 0) { LoopingAnim(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0); // Dieing of Crack return 1; } // Male Smoking if (strcmp("/smokem", cmdtext, true, 4) == 0) { LoopingAnim(playerid,"SMOKING", "M_smklean_loop", 4.0, 1, 0, 0, 0, 0); // Smoke return 1; } // Female Smoking if (strcmp("/smokef", cmdtext, true) == 0) { LoopingAnim(playerid, "SMOKING", "F_smklean_loop", 4.0, 1, 0, 0, 0, 0); // Female Smoking return 1; } // Sit if (strcmp("/groundsit", cmdtext, true, 4) == 0) { LoopingAnim(playerid,"BEACH", "ParkSit_M_loop", 4.0, 1, 0, 0, 0, 0); // Sit return 1; } // Idle Chat if(strcmp(cmd, "/chat", true) == 0) { OnePlayAnim(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0); return 1; } // Fucku if(strcmp(cmd, "/fucku", true) == 0) { OnePlayAnim(playerid,"PED","fucku",4.0,0,0,0,0,0); return 1; } // TaiChi if(strcmp(cmd, "/taichi", true) == 0) { LoopingAnim(playerid,"PARK","Tai_Chi_Loop",4.0,1,0,0,0,0); return 1; } // ChairSit if(strcmp(cmd, "/chairsit", true) == 0) { LoopingAnim(playerid,"BAR","dnk_stndF_loop",4.0,1,0,0,0,0); return 1; } // Collapse if(strcmp(cmd, "/collapse", true) == 0) { LoopingAnim(playerid,"PED","FALL_COLLAPSE",4.0,1,0,0,0,0); return 1; } // fall if(strcmp(cmd, "/fallover", true) == 0) { LoopingAnim(playerid,"PED","FALL_FALL",4.0,1,0,0,0,0); return 1; } // ko if(strcmp(cmd, "/ko1", true) == 0) { LoopingAnim(playerid,"PED","KO_SHOT_STOM",200.0, 0, 1, 1, 1, -1); return 1; } // ko if(strcmp(cmd, "/ko2", true) == 0) { LoopingAnim(playerid,"PED","KO_SHOT_FACE",4.0, 0, 1, 1, 1, -1); return 1; } if(strcmp(cmd, "/floorhit", true) == 0) { ApplyAnimation(playerid,"PED", "FLOOR_hit_f", 4.1, 0, 0, 0, 1, 0); return 1; } /* Would allow people to troll... but would be cool as a script controlled function // Bed Sleep R if(strcmp(cmd, "/inbedright", true) == 0) { LoopingAnim(playerid,"INT_HOUSE","BED_Loop_R",4.0,1,0,0,0,0); return 1; } // Bed Sleep L if(strcmp(cmd, "/inbedleft", true) == 0) { LoopingAnim(playerid,"INT_HOUSE","BED_Loop_L",4.0,1,0,0,0,0); return 1; }*/ // START DANCING if(strcmp(cmd, "/dance", true) == 0) { new tmp[256]; // Get the dance style param tmp = strtok(cmdtext, idx); if(!strlen(tmp) || strlen(tmp) > 2) { SendClientMessage(playerid,0xFF0000FF,"USAGE: /dance [style 1-4]"); return 1; } dancestyle = strval(tmp); if(dancestyle < 1 || dancestyle > 4) { SendClientMessage(playerid,0xFF0000FF,"USAGE: /dance [style 1-4]"); return 1; } if(dancestyle == 1) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1); } else if(dancestyle == 2) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE2); } else if(dancestyle == 3) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE3); } else if(dancestyle == 4) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE4); } return 1; } return 0; } //------------------------------------------------- // EOF