Dobar dan jos jednom svima 😛 😛 😛 😎
Evo jos jedan Tutorial od mene: Kreiranje Actora InGame sa animacijama i labelima
Evo jos jedan Tutorial od mene: Kreiranje Actora InGame sa animacijama i labelima
Pa da krenemo prvo sta moramo da definisemo su include
#include
#include
Sad include za komande onaj koji vi najvise volite ja koristim Pawn.CMDDrugi korak je definisanje enuma za cuvanje aktora, file u koji ce se spremati i dialoge...
#define MAX_ACTOR 50 // Max actora koliko mozete kreirati ingame
#define ACTOR_FILE "Aktori/Actor_%d.ini" // Folder u koji ce se spremati Actori
enum ActorsData
{
ActorIme,
ActorSkinID,
ActorAnimID,
Float:APos_X,
Float:APos_Y,
Float:APos_Z,
Float:APos_Rot,
ActorID
};
new ActorInfo;
new Text3D:Actor3DText; // Define koji ce nam trebati za Label Actora
#define D_NAPRAVIACTORA 1 // Vi ovaj broj stavite koji vama nije definisan dialog
#define D_ACTORANIM 2
#define D_ACTORIMELABEL 3Ovo dodajte pod OnGameModeInit to ce vam sluziti za ucitavanje Actora, Labela i Animacija
for(new id = 0; id < MAX_ACTOR; id++)
{
new actorFile;
format(actorFile, sizeof(actorFile), ACTOR_FILE, id);
if(fexist(actorFile))
{
INI_ParseFile(actorFile, "UcitajActore", .bExtra = true, .extra = id);
ActorInfo = CreateActor(ActorInfo, ActorInfo, ActorInfo, ActorInfo, ActorInfo);
if(ActorInfo == 0) { ClearActorAnimations(ActorInfo);} // Animacija koja ne radi nista odnosno nema je
else if(ActorInfo == 1) { ApplyActorAnimation(ActorInfo, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1); } // Ostale animacije koje ce actori izvoditi kada ih kreirate
else if(ActorInfo == 2) { ApplyActorAnimation(ActorInfo, "RAPPING", "RAP_A_Loop", 4.0, 1, 0, 0, 0, 0); } // Vi ih mozete dodati jos
else if(ActorInfo == 3) { ApplyActorAnimation(ActorInfo, "PED", "IDLE_CHAT", 4.1, 1, 0, 0, 0, 0); }
SetActorInvulnerable(id, true);
Actors3DText();
}
}Sljedece pravimo dialoge kojima ce mo kreirati Actora, izvinite nisam mogao sve objasniti zato ga ni nisam napravio prije, a trazili ste ZURI8.... 😛
if(dialogid == D_NAPRAVIACTORA)
{
if(!response) return 1;
if(response)
{
if(strval(inputtext) < 0 && strval(inputtext) > 311) return SPD(playerid, D_NAPRAVIACTORA, DSI, "Kreiraj Actora", "Upisite ID skina za Actor-a:", "Napravi", "Zatvori");
for(new id = 0; id < MAX_ACTOR; id++)
{
new actorfilee;
format(actorfilee, sizeof(actorfilee), ACTOR_FILE, id);
if(!fexist(actorfilee))
{
new Float:x, Float:y, Float:z, Float:rot;
ActorInfo = strval(inputtext);
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, rot);
ActorInfo = x; ActorInfo = y; ActorInfo = z; ActorInfo = rot;
SPD(playerid, D_ACTORANIM, DSI, "Kreiraj Actora", "Upisite ID animacije za Actor-a:\n\nNazivi animacija:\n0. Bez animacije\n1. Stav\n2. Rep\n3. Chat", "Napravi", "Zatvori");
break;
}
}
}
}
if(dialogid == D_ACTORANIM)
{
if(!response) return 1;
if(response)
{
if(strval(inputtext) < 0 || strval(inputtext) > 3) return SPD(playerid, D_ACTORANIM, DSI, "Kreiraj Actora", "Upisite ID animacije za Actor-a:\n\nNazivi animacija:\n0. Bez animacije\n1. Stav\n2. Rep\n3. Chat", "Napravi", "Zatvori");
for(new id = 0; id < MAX_ACTOR; id++)
{
new actorfille;
format(actorfille, sizeof(actorfille), ACTOR_FILE, id);
if(!fexist(actorfille))
{
ActorInfo = strval(inputtext);
if(ActorInfo == 0) { ClearActorAnimations(ActorInfo); }
else if(ActorInfo == 1) { ApplyActorAnimation(ActorInfo, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1); }
else if(ActorInfo == 2) { ApplyActorAnimation(ActorInfo, "RAPPING", "RAP_A_Loop", 4.0, 1, 0, 0, 0, 0); }
else if(ActorInfo == 3) { ApplyActorAnimation(ActorInfo, "PED", "IDLE_CHAT", 4.1, 1, 0, 0, 0, 0); }
SPD(playerid, D_ACTORIMELABEL, DSI, "Kreiraj Actora", "Upisite naziv Actora koji ce se pojaviti na Labelu", "Napravi", "Zatvori");
break;
}
}
}
}
if(dialogid == D_ACTORIMELABEL)
{
if(!response) return 1;
if(response)
{
new actorimelabel;
if(sscanf(inputtext, "s", actorimelabel)) return SPD(playerid, D_ACTORIMELABEL, DSI, "Kreiraj Actora", "Upisite naziv Actora koji ce se pojaviti na Labelu", "Napravi", "Zatvori");
for(new id = 0; id < MAX_ACTOR; id++)
{
new actorfiile;
format(actorfiile, sizeof(actorfiile), ACTOR_FILE, id);
if(!fexist(actorfiile))
{
strmid(ActorInfo, actorimelabel, 0, strlen(actorimelabel), 50);
SendClientMessage(playerid, -1, "Završili ste kreiranje Actor-a.");
ActorInfo = CreateActor(ActorInfo, ActorInfo, ActorInfo, ActorInfo, ActorInfo);
SacuvajActore(id);
SetActorInvulnerable(id, true);
Actors3DText();
break;
}
}
}
}S ovom funkciom ce mo azurirati nas label i animacije....
forward Actors3DText();
public Actors3DText()
{
for(new id = 0; id < MAX_ACTOR; id++)
{
new actorfile;
format(actorfile, sizeof(actorfile), ACTOR_FILE, id);
if(fexist(actorfile))
{
if(ActorInfo == 0) { ClearActorAnimations(ActorInfo); }
else if(ActorInfo == 1) { ApplyActorAnimation(ActorInfo, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1); }
else if(ActorInfo == 2) { ApplyActorAnimation(ActorInfo, "RAPPING", "RAP_A_Loop", 4.0, 1, 0, 0, 0, 0); }
else if(ActorInfo == 3) { ApplyActorAnimation(ActorInfo, "PED", "IDLE_CHAT", 4.1, 1, 0, 0, 0, 0); }
new string;
format(string, sizeof(string), "[ Actor - (%d) ]\n[ %s ]", id, ActorInfo);
Actor3DText = Create3DTextLabel(string, -1, ActorInfo, ActorInfo, ActorInfo+1, 10, 0, 1);
}
}
return 1;
}Spremanje i Ucitavanje Actora
forward UcitajActore(actorid, name[], value[]);
public UcitajActore(actorid, name[], value[])
{
INI_String("ActorIme", ActorInfo, 30);
INI_Int("ActorSkinID", ActorInfo);
INI_Int("ActorAnimID", ActorInfo);
INI_Float("APos_X", ActorInfo);
INI_Float("APos_Y", ActorInfo);
INI_Float("APos_Z", ActorInfo);
INI_Float("APos_Rot", ActorInfo);
INI_Int("ActorID", ActorInfo);
return 1;
}
forward SacuvajActore(actorid);
public SacuvajActore(actorid)
{
new dFile;
format(dFile, sizeof(dFile), ACTOR_FILE, actorid);
new INI:File = INI_Open(dFile);
INI_WriteString(File, "ActorIme", ActorInfo);
INI_WriteInt(File, "ActorSkinID", ActorInfo);
INI_WriteInt(File, "ActorAnimID", ActorInfo);
INI_WriteFloat(File, "APos_X", ActorInfo);
INI_WriteFloat(File, "APos_Y", ActorInfo);
INI_WriteFloat(File, "APos_Z", ActorInfo);
INI_WriteFloat(File, "APos_Rot", ActorInfo);
INI_WriteInt(File, "ActorID", ActorInfo);
INI_Close(File);
return 1;
}I komanda s kojom zapocinjemo kreiranje Actora
CMD:kreirajactora(playerid, params[])
{
SPD(playerid, D_NAPRAVIACTORA, DSI, "Kreiraj Actora", "Upisite ID skina za Actor-a:", "Napravi", "Zatvori");
return 1;
}Ljudi izvinite sto nisam sve objasnio, eto nadam se da ce vam pomoci...
Ne zamjerite na greskama..

