Právě je úte 22. kvě 2012 12:30:07
Hosting WEDOS.cz
SLEVA 25% (slevový kód:PAWNO25)

Nejnovější témata:
[HLADAM] Názov web Hostingu od Jakubes
[HELP] NHL 09 od Jakubes
HRAJMINERCAFT.CZ - IndustrialCraft, BuildCraft, RedPower od MajkX
[OCHRANA] FS Control [Identifikovac hack prikazov] od Om3n
[Hlasovanie] Pridanie teamov do PICH od MajkX

Vyzkoušejte antivirus ESET Smart Security 5

Vyhledat témata bez odpovědí | Zobrazit aktivní témata Zobrazit nové příspěvky | Zobrazit vaše příspěvky


Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 
Autor Zpráva
 Předmět příspěvku: [INC] MovCam - Dynamické kamery
PříspěvekNapsal: pát 27. led 2012 19:25:52 
Kendall Johnson "Kendl"
Kendall Johnson "Kendl"
Uživatelský avatar
Registrován: úte 24. bře 2009 14:16:39
Příspěvky: 2873
Bydliště: Továrna na marmeželádu / Sklad bagrů

Získal jsem přístup ke svému starému PC a vytáhl všechny své poklady.

Prvním pokladem jest zapomenutý include Moving Cameras:

Spoiler:
Kód:
//Moving Cameras Script Created By FFREDYK

#define MAX_CAMS 20

#include <a_samp>

enum CAM
{
   bool:Exist = false,
}

enum POS
{
    Float:CamWTLookX,
   Float:CamWTLookY,
   Float:CamWTLookZ,
   Float:CamLookPosX,
   Float:CamLookPosY,
   Float:CamLookPosZ,
}

forward SetCamPoses(playerid,camid,del);
forward SetCamPosesEx(playerid,camid,del);
forward CreateCamera(playerid,camid,Float:X,Float:Y,Float:Z,Float:lX,Float:lY,Float:lZ);
forward MoveCameraEx(playerid,camid,Float:X,Float:Y,Float:Z,Float:llX,Float:llY,Float:llZ,Float:Speed,del);
forward MoveCamera(playerid,camid,Float:X,Float:Y,Float:Z,Float:llX,Float:llY,Float:llZ,Float:Speed,del);
forward Float:GetDistanceToPoint(Float:x, Float:y, Float:z, Float:px, Float:py, Float:pz);
forward DestroyCamera(playerid,camid);
forward IsValidCamera(camid);

forward OnCameraStop(playerid,camid);

new CamPos[MAX_CAMS][POS];
new Kamera[MAX_CAMS][CAM];
new CamObj[MAX_CAMS];

public Float:GetDistanceToPoint(Float:x, Float:y, Float:z, Float:px, Float:py, Float:pz)
{
    return floatsqroot( floatadd( floatadd( floatpower(floatsub(x, px), 2), floatpower(floatsub(y, py), 2) ), floatpower(floatsub(z, pz), 2) ) );
}

public IsValidCamera(camid)
{
   if(camid > MAX_CAMS || camid < 0)
   {
       printf("Create Camera Error: Invalid ID of camera (%d)!",camid);
      return 0;
   }
   if(Kamera[camid][Exist] == false)
   {
       return 0;
   }
   else return 1;
}

public DestroyCamera(playerid,camid)
{
   if(camid > MAX_CAMS || camid < 0)
   {
       printf("Create Camera Error: Invalid ID of camera (%d)!",camid);
      return 0;
   }
   else if(Kamera[camid][Exist] == false)
   {
       printf("Create Camera Error: Camera with ID (%d) not exist!",camid);
       return 0;
   }
   else
   {
       Kamera[camid][Exist] = false;
      SetCameraBehindPlayer(playerid);
      return 1;
   }
}

public CreateCamera(playerid,camid,Float:X,Float:Y,Float:Z,Float:lX,Float:lY,Float:lZ)
{
   if(camid > MAX_CAMS || camid < 0)
   {
       printf("Create Camera Error: Invalid ID of camera (%d)!",camid);
      return 0;
   }
   else if(Kamera[camid][Exist] == true)
   {
       printf("Create Camera Error: Camera with ID (%d) already exist!",camid);
       return 0;
   }
   else
   {
       CamPos[camid][CamLookPosX] = lX;
       CamPos[camid][CamLookPosY] = lY;
       CamPos[camid][CamLookPosZ] = lZ;
       Kamera[camid][Exist] = true;
      CamObj[camid] = CreateObject(1489,X,Y,Z,0,0,0);
      SetPlayerCameraPos(playerid,X,Y,Z);
      SetPlayerCameraLookAt(playerid,lX,lY,lZ);
      printf("Create Camera Success: Camera ID %d / Player ID %d",camid,playerid);
      return 1;
   }
}

public MoveCamera(playerid,camid,Float:X,Float:Y,Float:Z,Float:llX,Float:llY,Float:llZ,Float:Speed,del)
{
    if(camid > MAX_CAMS || camid < 0)
   {
       printf("Move Camera Error: Invalid ID of camera (%d)!",camid);
      return 0;
   }
   else if(Kamera[camid][Exist] == false)
   {
       printf("Move Camera Error: Camera ID (%d) does not exist!",camid);
       return 0;
   }
   else
   {
       CamPos[camid][CamWTLookX] = llX;
       CamPos[camid][CamWTLookY] = llY;
       CamPos[camid][CamWTLookZ] = llZ;

      MoveObject(CamObj[camid],X,Y,Z,Speed);
      SetTimerEx("SetCamPoses",100,0,"iii",playerid,camid,del);
      printf("Move Camera: Camera ID %d / Player ID %d started moving!",camid,playerid);
      return 1;
   }
}

public MoveCameraEx(playerid,camid,Float:X,Float:Y,Float:Z,Float:llX,Float:llY,Float:llZ,Float:Speed,del)
{
    if(camid > MAX_CAMS || camid < 0)
   {
       printf("Move Camera Error: Invalid ID of camera (%d)!",camid);
      return 0;
   }
   else if(Kamera[camid][Exist] == false)
   {
       printf("Move Camera Error: Camera ID (%d) does not exist!",camid);
       return 0;
   }
   else
   {
       CamPos[camid][CamWTLookX] = llX;
       CamPos[camid][CamWTLookY] = llY;
       CamPos[camid][CamWTLookZ] = llZ;
      
      MoveObject(CamObj[camid],X,Y,Z,Speed);
      SetTimerEx("SetCamPosesEx",50,0,"iii",playerid,camid,del);
      printf("Move Camera: Camera ID %d / Player ID %d started moving!",camid,playerid);
      return 1;
   }
}

public SetCamPoses(playerid,camid,del)
{
   new Float:X,
       Float:Y,
       Float:Z,
       Float:xX,
       Float:xY,
       Float:xZ;

   GetObjectPos(CamObj[camid],X,Y,Z);
   GetPlayerPos(playerid,xX,xY,xZ);

   SetPlayerCameraPos(playerid,X,Y,Z);
   
   CamPos[camid][CamLookPosX] = floatdiv(floatadd(CamPos[camid][CamLookPosX],CamPos[camid][CamWTLookX]),2);
    CamPos[camid][CamLookPosY] = floatdiv(floatadd(CamPos[camid][CamLookPosY],CamPos[camid][CamWTLookY]),2);
    CamPos[camid][CamLookPosZ] = floatdiv(floatadd(CamPos[camid][CamLookPosZ],CamPos[camid][CamWTLookZ]),2);
   
   SetPlayerCameraLookAt(playerid,CamPos[camid][CamLookPosX],CamPos[camid][CamLookPosY],CamPos[camid][CamLookPosZ]);
   if(GetDistanceToPoint(X,Y,Z,xX,xY,xZ) > 1.0 && IsValidCamera(camid))
   {
      SetTimerEx("SetCamPoses",50,0,"ii",playerid,camid);
      printf("Update Camera: Camera ID %d / Player ID %d moved! Distance: %f",camid,playerid,GetDistanceToPoint(X,Y,Z,xX,xY,xZ));
   }
   else
   {
       printf("Update Camera: Camera ID %d / Player ID %d stopped moving!",camid,playerid);
       if(del) SetCameraBehindPlayer(playerid);
   }
}

public SetCamPosesEx(playerid,camid,del)
{
   new Float:X,
       Float:Y,
       Float:Z,
       Float:xX,
       Float:xY,
       Float:xZ;

   GetObjectPos(CamObj[camid],X,Y,Z);
   GetPlayerPos(playerid,xX,xY,xZ);

   SetPlayerCameraPos(playerid,X,Y,Z);

   SetPlayerCameraLookAt(playerid,CamPos[camid][CamWTLookX],CamPos[camid][CamWTLookY],CamPos[camid][CamWTLookZ]);
   if(GetDistanceToPoint(X,Y,Z,xX,xY,xZ) > 1.0 && IsValidCamera(camid))
   {
      SetTimerEx("SetCamPoses",100,0,"ii",playerid,camid);
      printf("Update Camera: Camera ID %d / Player ID %d moved! Distance: %f",camid,playerid,GetDistanceToPoint(X,Y,Z,xX,xY,xZ));
   }
   else
   {
       printf("Update Camera: Camera ID %d / Player ID %d stopped moving!",camid,playerid);
       if(del) SetCameraBehindPlayer(playerid);
   }
}


Jelikož Pawn již nedělám a tento include je jeden z jednodušších, dám ho sem.
Při použití více než 20 kamer include žere veliké množství výkonu. Jelikož za velmi krátkou dobu provádí hodně operací.. Kdybych ho někdy převedl do pluginu (C++), byl by schopný jet na svém vlastním threadu a byl by schopný řešit více kamer.

Licencováno pod GNU - Volné šíření, volná úprava. Zpoplatnění zakázáno.

_________________
*Brain reset*
With new brain, new personality, new ffredyk..


Offline
 Profil  
 Předmět příspěvku: Re: [INC] MovCam - Dynamické kamery
PříspěvekNapsal: sob 28. led 2012 10:10:33 
Carl Johnson "CJ"
Carl Johnson "CJ"
Uživatelský avatar
Registrován: čtv 29. led 2009 20:03:51
Příspěvky: 4540
Bydliště: Blava ne ?

je to super ;) 10/10 tiež som mal v pláne si spraviť niečo podobné... len som sa rozhodol pre nie, lebo iný spôsob ako nízky timer s matematickými operáciami ani není možný (jedine plugin no...) ale aj tak super ;) pre niake malé módy to môže byť užitočné

_________________
Moja tvorba http://pastebin.com/u/PatchwerkQWER
Ak chceš byť lepší ako ja, a budeš sa snažiť budeš lepší ! Už len pri pomyslení na to, že si lepší než ja, ťa posunie dopredu. Ale nezabudni ! Musíš sa snažiť. A potom zistíš to, čo vie pár ľudí - že som lama a moje scripty sú nič oproti tomu, čo môžeš vytvoriť ty. Tak sa prekonaj ako kedysi ja, a natri to všetkým ! Uprav budúcnosť pre svoj prospech


Offline
 Profil  
 Předmět příspěvku: Re: [INC] MovCam - Dynamické kamery
PříspěvekNapsal: sob 28. led 2012 16:10:29 
Kendall Johnson "Kendl"
Kendall Johnson "Kendl"
Uživatelský avatar
Registrován: úte 24. bře 2009 14:16:39
Příspěvky: 2873
Bydliště: Továrna na marmeželádu / Sklad bagrů

Kdo by chtěl vidět použití, mám tu starý vánoční mód, co se ani nepoužil.

http://ffredyk.ic.cz/Pwn-Scripty/vanoce2010.pwn

//Není dodělaný, obsahuje pár objektů, pohybující se kameru a je to bordel :mrgreen: "nene"

_________________
*Brain reset*
With new brain, new personality, new ffredyk..


Offline
 Profil  
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


 Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na: