Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************************
- # Changelog
- v0.1 - 07/05/2015:
- - Script Criado.
- - Comandos para criar, destruir e alterar actors.
- - Lista de comandos para saber de todos os comandos disponíveis.
- - Possível executar/parar animação em um ou todos actors.
- v0.1 R2 - 07/05/2015
- - Comando /criaractor corrigido, setando a posição do jogador para o lado, para não ocorrer bugs.
- - Debugs desabilitados.
- *******************************************************************************/
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- #define DIALOG_ACTORCMDS 32002
- #define DIALOG_VERACTORS 32003
- enum cmd_infos
- {
- Comando[128],
- Descricao[128]
- };
- new cmds_Actor[][cmd_infos] = {
- {"/criaractor [skin id]", "Cria um actor com a skin desejada"},
- {"/destruiractor [actor id]", "Destroi um actor"},
- {"/destruirtodosactors", "Destrói todos os actors do servidor"},
- {"/animaractor [actor id] [animlib] [animname] [loop]", "Anima um actor"},
- {"/pararanimactor [actor id]", "Para a animação de um actor"},
- {"/animtodosactors [animlib] [animname] [loop]", "Anima todos os actors do servidor"},
- {"/pararanimtodosactors", "Para a animação de todos os actors"},
- {"/actorpos [actor id] [x] [y] [z] [rotação]", "Seta a posição de um actor"},
- {"/actormundo [actor id] [mundo virtual]", "Seta o mundo virtual de um actor"},
- {"/actorvuneravel [actor id]", "Deixa um actor vuneravel/invuneravel"},
- {"/actorvida [actor id] [vida]", "Seta a vida de um actor"},
- {"/veractors", "Visualiza os actors criados"}
- };
- public OnFilterScriptInit()
- {
- print("*****************************************");
- print("**** Actor debug - básico [CARREGADO]****");
- print("*****************************************");
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("*****************************************");
- print("**** Actor debug - básico [DESLIGADO]****");
- print("*****************************************");
- return 1;
- }
- CMD:criaractor(playerid, params[]) {
- new skin_actor;
- if(sscanf(params, "i", skin_actor)) return SendClientMessage(playerid, -1, "{FF0000}Use: /criaractor [skin id]");
- if(skin_actor < 0 || skin_actor > 311) return SendClientMessage(playerid, -1, "{FF0000}O id é inválido!");
- new Float:pP[4], Msg[144], Actorid;
- GetPlayerPos(playerid, pP[0], pP[1], pP[2]);
- GetPlayerFacingAngle(playerid, pP[3]);
- Actorid = CreateActor(skin_actor, pP[0], pP[1], pP[2], pP[3]);
- format(Msg, 144, "{FFFF00}Actor id: %i", Actorid);
- SendClientMessage(playerid, -1, Msg);
- SetPlayerPos(playerid, pP[0] + 1.0, pP[1] + 1.0, pP[2]);
- return 1;
- }
- CMD:destruiractor(playerid, params[]) {
- new actorid;
- if(sscanf(params, "i", actorid)) return SendClientMessage(playerid, -1, "{FF0000}Use: /destruiractor [actor id]");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- DestroyActor(actorid);
- format(Msg, 144, "{FFFF00}Actor id %i foi destruido.", actorid);
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:destruirtodosactors(playerid, params[]) {
- new Msg[144], actors;
- for(new i; i <= GetActorPoolSize(); i++) {
- if(!IsValidActor(i)) continue;
- DestroyActor(i);
- actors++;
- }
- if(actors==0) return SendClientMessage(playerid, -1, "{FF0000}Não há actors!");
- format(Msg, 144, "{FFFF00}Foram destruidos %i actors.", actors);
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:animaractor(playerid, params[]) {
- new actorid, animlib[32], animname[32], loop;
- if(sscanf(params, "is[32]s[32]i", actorid, animlib, animname, loop)) return SendClientMessage(playerid, -1, "{FF0000}Use: /animaractor [actor id] [animlib] [animname] [loop (0-1)");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- ClearActorAnimations(actorid);
- ApplyActorAnimation(actorid, animlib, animname, 4.1, loop, 1, 1, 0, 0);
- format(Msg, 144, "{00FF00}Actor id %i executando animação da lib %s animação %s (%s)", actorid, animlib, animname, (loop == 0 ? ("sem loop") : ("com loop")));
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:pararanimactor(playerid, params[]) {
- new actorid;
- if(sscanf(params, "i", actorid)) return SendClientMessage(playerid, -1, "{FF0000}Use: /pararanimactor [actor id]");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- ClearActorAnimations(actorid);
- format(Msg, 144, "{a9c4e4}Animação do actor %i foi parada!", actorid);
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:animtodosactors(playerid, params[]) {
- new animlib[32], animname[32], loop;
- if(sscanf(params, "s[32]s[32]i", animlib,animname,loop)) return SendClientMessage(playerid, -1, "{FF0000}Use: /animtodosactos [animlib] [animname] [loop (0-1)]");
- new Msg[144];
- for(new i; i <= GetActorPoolSize(); i++) {
- if(!IsValidActor(i)) continue;
- ClearActorAnimations(i);
- ApplyActorAnimation(i, animlib, animname, 4.1, loop, 1, 1, 0, 0);
- }
- format(Msg, 144, "{00FF00}Todos os actors estão executando a animação da lib %s animação %s (%s)", animlib, animname, (loop == 0 ? ("sem loop") : ("com loop")));
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:pararanimtodosactors(playerid, params[]) {
- for(new i; i <= GetActorPoolSize(); i++) {
- if(!IsValidActor(i)) continue;
- ClearActorAnimations(i);
- }
- SendClientMessage(playerid, -1, "{FFFF00}A animação de todos os actors existentes foram paradas.");
- return 1;
- }
- CMD:actorpos(playerid, params[]) {
- new actorid, Float:apos[4];
- if(sscanf(params, "iffff", actorid, apos[0], apos[1], apos[2], apos[3])) return SendClientMessage(playerid, -1, "{FF0000}Use: /actorpos [actorid] [x] [y] [z] [rotação]");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- SetActorPos(actorid, apos[0], apos[1], apos[2]);
- SetActorFacingAngle(actorid, apos[3]);
- format(Msg, 144, "{a9c4e4}Actor %i em x=%4.2f - y=%4.2f - z=%4.2f - rotação=%4.2f", actorid, apos[0], apos[1], apos[2], apos[3]);
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:actormundo(playerid, params[]) {
- new actorid, amundo;
- if(sscanf(params, "ii", actorid, amundo)) return SendClientMessage(playerid, -1, "{FF0000}Use: /actormundo [actorid] [mundo]");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- SetActorVirtualWorld(actorid, amundo);
- format(Msg, 144, "{a9c4e4}Actor %i em mundo %i.", actorid, amundo);
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:actorvuneravel(playerid, params[]) {
- new actorid;
- if(sscanf(params, "i", actorid)) return SendClientMessage(playerid, -1, "{FF0000}Use:/actorvuneravel [actorid]");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- if(IsActorInvulnerable(actorid)) {
- SetActorInvulnerable(actorid, false);
- format(Msg, 144, "{FFFF00}Actor %i agora é vunerável.", actorid);
- }
- else {
- SetActorInvulnerable(actorid, true);
- format(Msg, 144, "{FFFF00}Actor %i agora é invunerável.", actorid);
- }
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:actorvida(playerid, params[]) {
- new actorid, Float:avida;
- if(sscanf(params, "if", actorid, avida)) return SendClientMessage(playerid, -1, "{FF0000}Use: /actorvida [actorid] [vida]");
- if(!IsValidActor(actorid)) return SendClientMessage(playerid, -1, "{FF0000}Actor inválido.");
- new Msg[144];
- SetActorHealth(actorid, avida);
- format(Msg, 144, "{a9c4e4}Vida do actor %i foi setada para: %4.2f", actorid, avida);
- SendClientMessage(playerid, -1, Msg);
- return 1;
- }
- CMD:veractors(playerid, params[]) {
- new di[1000], actors;
- strcat(di, "Actor id\tCoordenadas de Posição\tMundo Virtual\tVida\n");
- for(new i; i <= GetActorPoolSize(); i++) {
- if(!IsValidActor(i)) continue;
- new Float:pA[3], Float:aVida;
- GetActorPos(i, pA[0], pA[1], pA[2]);
- GetActorHealth(i, aVida);
- format(di, sizeof(di), "%s%i\tx=%4.2f y=%4.2f z=%4.2f\t%i\t%4.2f\n", di, i,pA[0],pA[1],pA[2],GetActorVirtualWorld(i),aVida);
- actors++;
- }
- if(actors==0) return SendClientMessage(playerid, -1, "{FF0000}Não há actors!");
- ShowPlayerDialog(playerid, DIALOG_VERACTORS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}# {FFFFFF}Visualizando actors", di, "Ok", "Cancelar");
- return 1;
- }
- CMD:comandosactor(playerid) {
- new di_actor[1000];
- strcat(di_actor, "Comando\tDescrição\n");
- for(new i; i < sizeof(cmds_Actor); i++) {
- strcat(di_actor, cmds_Actor[i][Comando]);
- strcat(di_actor, "\t");
- strcat(di_actor, cmds_Actor[i][Descricao]);
- strcat(di_actor, "\n");
- }
- ShowPlayerDialog(playerid, DIALOG_ACTORCMDS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}# {FFFFFF}Comando de actors", di_actor, "Ok", "");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- switch (dialogid) {
- case DIALOG_ACTORCMDS: {
- if(!response) return 0;
- new Msg[144];
- format(Msg, 144, "{FFFF00}%s - %s", cmds_Actor[listitem][Comando], cmds_Actor[listitem][Descricao]);
- SendClientMessage(playerid, -1, Msg);
- return 0;
- }
- case DIALOG_VERACTORS: {
- if(!response) return 0;
- new actors;
- for(new i; i <= GetActorPoolSize(); i++) {
- if(!IsValidActor(i)) continue;
- if(listitem == actors) {
- new Float:apos[4];
- GetActorPos(i, apos[0], apos[1], apos[2]);
- GetActorFacingAngle(i, apos[3]);
- SetPlayerPos(playerid, apos[0] + 1.0, apos[1] + 1.0, apos[2] + 1.5);
- SetPlayerFacingAngle(i, apos[3]);
- break;
- }
- actors++;
- }
- return 0;
- }
- }
- return 1;
- }
- public OnPlayerGiveDamageActor(playerid, damaged_actorid, Float:amount, weaponid, bodypart)
- {
- //printf("[DEBUG] OnPlayerGiveDamageActor(%i, %i, %f, %i, %i)", playerid, damaged_actorid, amount, weaponid, bodypart);
- if(!IsActorInvulnerable(damaged_actorid)) {
- new Float:aVida;
- GetActorHealth(damaged_actorid, aVida);
- SetActorHealth(damaged_actorid, aVida-amount);
- /*new Msg[144];
- format(Msg, 144, "{FF0000}* Actor %i sofreu %4.2f de dano. Agora ele tem %4.2f de vida.", damaged_actorid, amount, (aVida-amount));
- SendClientMessage(playerid, -1, Msg); */
- }
- return 1;
- }
- public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
- {
- //printf("[DEBUG] OnPlayerWeaponShot(%i, %i, %i, %i, %f, %f, %f)", playerid, weaponid, hittype, hitid, fX, fY, fZ);
- return 1;
- }
- /*********************************************************************************************************
- ********** ************
- ********** Gerado em 07/05/2015 por Nícolas Corrêa ************
- ********** www.brasilmegatrucker.com ************
- ********** ************
- *********************************************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement