Szerző Téma: campos mentés  (Megtekintve 1073 alkalommal)

Nem elérhető myke

  • 213
    • Profil megtekintése
campos mentés
« Dátum: 2014. november 19. - 13:54:47 »
0 Show voters
Hali.
Régebben fönt volt egy script, aminél ha beírod a /savecam parancsot, elmenti egy fájlba a kamera pozíciót, és más dolgokat.
...csak lelett törölve valami miatt.
Ezt eltudná valaki küldeni?

campos mentés
« Válasz #1 Dátum: 2014. november 19. - 15:45:21 »
0 Show voters
#include <a_samp>
#define FILERSCRIPT 1
#define COLOR_SAMP 0xA9C4E4FF
new Float:CameraSet[6];
new Float:Val;
new SetPos = 0;
new SetAt = 0;
#define KEY_RMB 4
#define KEY_LMB 128
#define KEY_Num6 16384
#define KEY_Num4 8192
#define KEY_SPACE 8
#define KEY_ALT 1024
 
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= \' \')) { index++; }
new offset = index;
new result[20];
while ((index < length) && (string[index] > \' \') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Kamera Pozíció\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx;
cmd = strtok(cmdtext, idx);
new string[256];
    new tmp[256];
    if(strcmp(cmd, \"/kameraparancsok\", true) == 0)
{
SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor:  /setcam /mocam /lookatcam /setvalcam /endcam.\");
return 1;
}
if(strcmp(cmd, \"/setcam\", true) == 0)
{
    TogglePlayerControllable(playerid,0);
    GetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
GetPlayerPos(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
Val = 1.0;
SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor:  /mocam /lookatcam /setvalcam /endcam\");
return 1;
}
if(strcmp(cmd, \"/mocam\", true) == 0)
{
    SetPos = 1; SetAt = 0;
    SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor:  Now you can move the camera, to change moving rate use /setvalcam\");
SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor:  Num4/Num6: X-Axis, RMB/LMB: Y-Axis, Space/Alt: Z-Axis\");
return 1;
}
if(strcmp(cmd, \"/lookatcam\", true) == 0)
{
    SetPos = 0; SetAt = 1;
    SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor:  Most állíthatod be a pozíciót /setvalcam\");
SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor:  Num4/Num6: X-Axis, RMB/LMB: Y-Axis, Szóköz/Alt: Z-Axis\");
return 1;
}
if(strcmp(cmd, \"/setvalcam\", true) == 0)
{
    tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
   SendClientMessage(playerid,COLOR_SAMP,\"/sevalcam [value].\");
   return 1;
}
Val = floatstr(tmp);
format(string,256,\"Camera Editor:  Kamera mozgási aránya %.3f\",Val);
SendClientMessage(playerid,COLOR_SAMP,string);
return 1;
}
if(strcmp(cmd, \"/endcam\", true) == 0)
{
    SetPos = 0; SetAt = 0;
    SendClientMessage(playerid,COLOR_SAMP,\"Camera Editor: Ha elakarod menteni: /savecam\");
    TogglePlayerControllable(playerid,1);
    SetCameraBehindPlayer(playerid);
return 1;
}
if(strcmp(cmd, \"/savecam\", true) == 0)
{
new entry[256];
format(entry, sizeof(entry), \"SetPlayerCameraPos(playerid,%.3f,%.3f,%.3f); \\nSetPlayerCameraLookAt(playerid,%.3f,%.3f,%.3f); \\n\",CameraSet[0],CameraSet[1],CameraSet[2],CameraSet[3],CameraSet[4],CameraSet[5]);
new File:hFile; hFile = fopen(\"Cameras.cfg\", io_append); fwrite(hFile, entry); fclose(hFile);
SendClientMessage(playerid,COLOR_SAMP,entry);
return 1;
}
return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_Num6)
{
    if(SetPos == 1)
{
    CameraSet[0] += Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
    else if(SetAt == 1)
{
    CameraSet[3] += Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
}
else if(newkeys == KEY_Num4)
{
        if(SetPos == 1)
{
    CameraSet[0] -= Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
    else if(SetAt == 1)
{
    CameraSet[3] -= Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
}
else if(newkeys == KEY_RMB)
{
if(SetPos == 1)
{
    CameraSet[1] += Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
    else if(SetAt == 1)
{
    CameraSet[4] += Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
}
else if(newkeys == KEY_LMB)
{
if(SetPos == 1)
{
    CameraSet[1] -= Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
    else if(SetAt == 1)
{
    CameraSet[4] -= Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
}
else if(newkeys == KEY_ALT)
{
if(SetPos == 1)
{
    CameraSet[2] -= Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
    else if(SetAt == 1)
{
    CameraSet[5] -= Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
}
else if(newkeys == KEY_SPACE)
{
if(SetPos == 1)
{
    CameraSet[2] += Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
    else if(SetAt == 1)
{
    CameraSet[5] += Val;
   SetPlayerCameraPos(playerid,CameraSet[0],CameraSet[1],CameraSet[2]);
   SetPlayerCameraLookAt(playerid,CameraSet[3],CameraSet[4],CameraSet[5]);
}
}
return 1;
}
 

Nem elérhető myke

  • 213
    • Profil megtekintése
campos mentés
« Válasz #2 Dátum: 2014. november 19. - 17:02:33 »
0 Show voters
Nem erre gondoltam, az csak egy CMD-s parancsból áll :)

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
campos mentés
« Válasz #3 Dátum: 2014. november 19. - 17:15:20 »
0 Show voters
Ne várd el, hogy valaki beleálláson a fejedbe és az ott talált információk alapján megtalálja neked azt a bizonyos forráskódot. CMD-s, CMD-s... Teljesen mindegy. Amelyet az előttem szóló másolt be, az sima OnPlayerCommandText-es így nem kell ZCMD-t használni. Ha pedig mindenáron az kell neked, akkor 2 perc alatt átírhatod rá. Ha annyira kell pontosan az a verzió, írd meg magadnak. Ha nem megy egy sima parancs elkészítése sem, akkor nézz körül a tutorial részlegünkben!
 
Idézetet írta: myke date=1416401687\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51419\" data-ipsquote-contentclass=\"forums_Topic
ha beírod a /savecam parancsot, elmenti egy fájlba a kamera pozíciót
Kamera vagy játékos pozíció? Mert a kamera pozíciója az kicsit hátrébb és feljebb van alaphelyzetben, mint a játékos karaktere és van egy olyan koordináta is, amely felé néz. Ekkor használhatod a GetPlayerCameraPos függvényt. Illetve a legjobb megoldás az, ha map editorban felmész a kívánt pontra és a kívánt irányba forgatod a kamerát, majd kimásolod az ott kapott koordinátákat a Views fülön. De nem lehet, hogy szimplán a karakter pozíciója kéne? Mert akkor egyszerű GetPlayerPos-t kell használod. Bár ez esetben egyszerűbb az alap /save parancsot használni.
 

és más dolgokat.
 
[/quote]
Miféle más dolgokat? Játékos skinje például? GetPlayerSkin. De a /save parancsnál is lementi, persze csak akkor, ha arra van szükséged, nem pedig a tényleges kamera pozícióra. Ha járművet is akarsz menten, akkor pedig ott az IsPlayerInAnyVehicle és a GetVehiclePos (ha rotáció is kell, akkor a GetVehicleZAngle) függvény.

Nem elérhető myke

  • 213
    • Profil megtekintése
campos mentés
« Válasz #4 Dátum: 2014. november 19. - 17:41:04 »
0 Show voters
Spoiler for Dfoglalo:
Figyelj...Én nem várok el senkitől semmit, csak egy kérésem/kérdésem volt. Amúgy meg neked lehet, hogy ZCMD-s van OnPlayerCommandTextes, mert nem neked kell. Nem tudom mit kell egyből fölkapni a vizet...
Amúgy meg itt a törölt link, ha valakinek segít: http://sampforum.hu/index.php?topic=40932.msg416779#msg416779 .

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
campos mentés
« Válasz #5 Dátum: 2014. november 19. - 18:25:54 »
0 Show voters
Úgy imádom ezt :D Az írásos kommunikációban nem lehet tökéletes kifejezni az érzelmeket, így ha valaki helyesen, megfogalmazottan és komolyan ír, esetleg hangulatjelek nélkül, akkor az máris haragos, szomorú, dühös, vagy felkapta a vizet. Nem, én nem kaptam fel a vizet, elvégre nincs min. Csupán leírtam néhány állítást, kijelentést és megpróbáltam neked segíteni. Úgy pedig sosem fogsz megtanulni normális szkriptelni/programozni, ha mindig csak egy-egy adott, más által írt kódra támaszkodsz. Tessék saját forráskódokat írni és tanulni vele.


Egyébként így egyszerű volt megtalálni:
http://pastebin.com/6ASTyEHY
És ezek szerint nem ZCMD-s.

Nem elérhető myke

  • 213
    • Profil megtekintése
campos mentés
« Válasz #6 Dátum: 2014. november 19. - 19:54:03 »
0 Show voters
Oké, akkor igazad van.
A gyerek ahogy fölrakta ZCMD-s volt.
Amúgy meg nem tudok egyedül minden dolgot megcsinálni, még annyira nem vagyok profi PAWNO-ba, ezért néha-néha segítséget kell kérnem...
De azért köszi, hogy elküldted.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
campos mentés
« Válasz #7 Dátum: 2014. november 19. - 20:01:55 »
0 Show voters
Pawn* A Pawno egy program. Régen szerintem még én is kevertem. :D Semmi probléma, azért van ez a fórumrész. Viszont amit bemásoltam, az azt a txt-t használja, mint a törölt tartalmú téma volt kódja + a feltöltés is abba az időszakba esik. Ráadásul csak egy parancs, ahogyan kérted.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal