Jump to content

illiker58

Membru
  • Posts

    5
  • Joined

  • Last visited

illiker58's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter

Recent Badges

0

Reputation

  1. Este prezent! L-am generat cu vrăjitorul pe GitHub și se încarcă ușor când pornește serverul!
  2. Buna seara si un an nou fericit tuturor. Făceam câteva teste așa cum ați descris anterior și observ câteva probleme la nivelul coliziunii. Am introdus și un obiect fizic pentru a înțelege dacă poziția/rotația în funcție de vehicul este corectă. Ceea ce observ, de exemplu, este că funcția CA_ContactTest trebuie să aibă toate valorile de poziție/rotație perfect egale cu obiectul de testat pentru a returna că condiția a apărut. O sa atasez cateva fotografii si scenariul atasat! Cu toate acestea, la obținerea poziției unui obiect CA_CreateObject, valorile float sunt întotdeauna 0.0. Nu există o metodă pentru a obține poziția ca CA_GetObjectPos? De asemenea, am rulat un test suplimentar între un CA_CreateObject și CreateObject cu aceeași poziție (unde apare condiția), deplasând obiectul de coliziune cu CA_SetObjectPos, coliziunea are loc în continuare. Mulțumesc pentru răbdarea dvs. #include <a_samp> #include <colandreas> new obj1, obj2; new objView; new objTest1, objTest2; public OnFilterScriptInit() { CA_Init(); //obj1 = CA_CreateObject(710, 2045.71887, 1351.40881, 24.95637, 0, 0, 0); obj2 = CreateObject(3437, 2045.76587, 1351.48413, 15.64844, 356.85840, 0.00000, -3.00958); //Object test objTest1 = CA_CreateObject(19791, 2002.51270, 1259.76611, 9.96172, 0.00000, 0.00000, 0.00000); objTest2 = CreateObject(19790, 2002.51270, 1259.76611, 9.96172, 0.00000, 0.00000, 0.00000); CreateVehicle(411, 2048.3931, 1320.5370, 10.5648, 0.0000, -1, -1, 100); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (!strcmp(cmdtext, "/col", true)) { new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz; GetObjectPos(obj2, x, y, z); GetObjectRot(obj2, rx, ry, rz); if (CA_ContactTest(18763, x, y, z, rx, ry, rz)) { SendClientMessage(playerid, -1, "ok!"); } else { SendClientMessage(playerid, -1, "no!"); } return 1; } if (!strcmp(cmdtext, "/cbj", true)) { new vehicleId = GetPlayerVehicleID(playerid); new Float:x, Float:y, Float:z, Float:r; GetVehiclePos(vehicleId, x, y, z); GetVehicleZAngle(vehicleId, r); obj1 = CA_CreateObject(18763, x, y, z, 0, 0, r); objView = CreateObject(18763, x, y, z, 0, 0, r); SendClientMessage(playerid, -1, "Object created!"); return 1; } if (!strcmp(cmdtext, "/dview", true)) { DestroyObject(objView); return 1; } ///Checks for collision with the same position if (!strcmp(cmdtext, "/coltest", true)) { new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz; GetObjectPos(objTest2, x, y, z); GetObjectRot(objTest2, rx, ry, rz); if (CA_ContactTest(19791, x, y, z, rx, ry, rz)) { SendClientMessage(playerid, -1, "ok!"); } else { SendClientMessage(playerid, -1, "no!"); } return 1; } if (!strcmp(cmdtext, "/setpos", true)) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); CA_SetObjectPos(objTest1, x, y, z); return 1; } return 0; } public OnPlayerUpdate(playerid) { new vehicleId = GetPlayerVehicleID(playerid); new playerState = GetPlayerState(playerid); if (playerState == PLAYER_STATE_DRIVER) { new Float:x, Float:y, Float:z, Float:r; GetVehiclePos(vehicleId, x, y, z); GetVehicleZAngle(vehicleId, r); if (CA_IsValidObject(obj1)) { CA_SetObjectPos(obj1, x, y, z); CA_SetObjectRot(obj1, 0.0, 0.0, r); } if (IsValidObject(objView)) { SetObjectPos(objView, x, y, z); SetObjectRot(objView, 0.0, 0.0, r); } } return 1; }
  3. Va multumesc pentru raspunsurile pe care mi le-ati oferit. Chestia este mai complexă decât mi-aș fi putut imagina... În acest moment, scuzați-mă dacă vă întreb din nou, în opinia dumneavoastră, „atașarea” unui obiect la un vehicul care are o dimensiune adecvată dimensiunilor vehiculului ar putea fi o solutie interesanta? De exemplu, acum încercam să fac un test simplu cu ColAndreas folosind funcția ContactTest cu două obiecte intersectate unul cu celălalt. Rechemarea comenzii blochează întregul server și în jurnal am eroarea: Exception At Address: 0x62D6AAC2 Module: (ColAndreas.dll) În loc să fac calcule matematice complexe (ceea ce este destul de complex pentru mine), aceasta, după părerea mea, ar putea fi o idee destul de adecvată. Mai există încă o îndoială, deoarece nu am cunoștințe directe cu privire la acest plugin și există o documentație slabă, probabil că obiectul atașat unui vehicul nu va avea o coliziune? Nu știu, cred că e ceva de aruncat. Nu mai am idei „fezabile”. Iată exemplul pe care încercam să-l dau: #include <a_samp> #include <colandreas> new obj1, obj2; public OnFilterScriptInit() { CA_Init(); obj1 = CreateObject(710, 2045.71887, 1351.40881, 24.95637, 0.00000, 0.00000, 0.00000); obj2 = CreateObject(3437, 2045.76587, 1351.48413, 15.64844, 356.85840, 0.00000, -3.00958); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (!strcmp(cmdtext, "/col", true)) { new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz; GetObjectPos(obj2, x, y, z); GetObjectRot(obj2, rx, ry, rz); if (CA_ContactTest(obj1, x, y, z, rx, ry, rz)) { SendClientMessage(playerid, -1, "ok!"); } return 1; } return 0; }
  4. Da, am încercat să verific și cu ColAndreas. Dar aceasta nu interfață doar cu obiectele hărții? Mi se pare că vehiculele nu sunt detectate de el. De asemenea, am încercat să verific distanța 3D, dar nu este exactă cu metoda GetDistance3D a math.inc include. Ceea ce spun este că pornind de la ciocnirea cu acesta, punctul vehiculului de exemplu „Elegy” va fi în centru.
  5. Bună ziua tuturor! Întâmpin dificultăți în a găsi o soluție pentru a detecta coliziunile pentru un script de lansare de rachete din mașini. Inițial, am ales să verific dacă există coliziuni folosind IsPlayerInRangeOfPoint, dar este foarte imprecis. În prezent, caut o soluție pentru a determina dacă obiectul rachetă poate fi interceptat ca o coliziune cu un vehicul. Mă gândeam la o cutie de coliziune invizibilă în jurul vehiculului. Aveți vreun sfat cu privire la detectarea coliziunilor între un obiect și un vehicul? Mulțumesc.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.