KuraMa 0 Odesláno: 9. Červenec, 2015 Share Odesláno: 9. Červenec, 2015 Mám ďalší problém,je to v tom že si idem spraviť hasiča,lenže neviem ako mám spraviť toto: Že keď začne misiu a vstupi do CP dám tam CreateExplosion a bude tam ohen lenze ako spravim ze ked uhasi ten ohen tak mu to da money a ukaze dalsi CP ? Ďakujem za odpovede. Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 9. Červenec, 2015 Share Odesláno: 9. Červenec, 2015 Vytvářej oheň přes objekty, ne přes exploze. Nastav těm objektům "HP" a pak testuj jestli hráč je ve vozidle, nebo drží hasičák, jestli kouká na ten objekt, jestli je v dostatečné vzdálenosti. jestli "střílí". Pokud vše splňuje tak odebírej danému obejktu "HP", až bude "HP" nulové, tak objekt odeber a dej mu odměnu a zobraz další CP. Ohně přes CreateExplosion jsou client side a vytvoří se jen hráčům, kterým se ta exploze streamuje. Link to comment Share on other sites More sharing options...
0 KuraMa 0 Odesláno: 9. Červenec, 2015 Author Share Odesláno: 9. Červenec, 2015 A ako mam objektom nastavit HP ? Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 9. Červenec, 2015 Share Odesláno: 9. Červenec, 2015 (upraveno) Takhle nějak to bude vypadat // deklarace proměnných new hpOhen[POCET_OBJEKTU]; // pole pro "hp" ohně new idOhen[POCET_OBJEKTU]; // pole pro id objektu ohně // vytváření ohně idOhen[0] = CreateObject(....); // objekty s modelem ohně idOhen[1] = CreateObject(....); hpOhen[0] = 100; // nastavení života na 100, při větším množství použij cyklus hpOhen[1] = 100; // zapnutí možnosti uhašení ohně: EnablePlayerCameraTarget(playerid, true); // vypnutí (po dokončení mise atd) EnablePlayerCameraTarget(playerid, false); // někde v publicu, kde to budeš kontrolovat (nedoporučuji OnPlayerUpdate) // pozn. Odstranění jednoho ohně neznamená, že uhasil všechny! if( sedí v hasičáku, nebo má hasičák, střílí z nich, má aktivovanou misi a bůh ví co ) { new Float:pos[3]; new obj = GetPlayerCameraTargetObject(playerid); GetObjectPos(obj, pos[0], pos[1], pos[3]); if(obj != INVALID_OBJECT_ID && IsPlayerInRangeOfPoint(playerid, rozsah, pos[0], pos[1], pos[2])) { for(new i = 0; i < POCET_OBJEKTU; i++) { if(obj == idOhen[i]) { hpOhen[i]--; // odebereme život if(hpOhen[i] <= 0) // pokud životy došly odstraníme oheň a dáme odměnu { DestroyObject(obj); Odměna, další cp atd break; } } } } } // EDIT: napadá mě, že funkce GetPlayerCameraTargetObject nemusí fungovat na objekty bez kolize (takže i objekt ohně). Jestli je tomu tak, tak to obejdi vytvořením nějakého neviditelného objektu a kontroly jestli míří na něj. Edited 9. Červenec, 2015 by Lukasz Link to comment Share on other sites More sharing options...
0 KuraMa 0 Odesláno: 9. Červenec, 2015 Author Share Odesláno: 9. Červenec, 2015 Díky moc Lukasz,a ešte keď sa ta môžem spytat nevieš id objectu nejakej steny nejakej velkej steny cez ktoru by hrac nepresiel nijak. Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 9. Červenec, 2015 Share Odesláno: 9. Červenec, 2015 18754 je to podlaha, ale není problém to natočit (má 250x250 metrů) jinak hráč ti projde přes všechno (cheaty atd), takže by to chtělo ošetřit uvnitř scriptu. Link to comment Share on other sites More sharing options...
0 KuraMa 0 Odesláno: 11. Červenec, 2015 Author Share Odesláno: 11. Červenec, 2015 (upraveno) Lukasz a ešte niečo robil som si arenu kde sa majú spawnovat každú minuty pickupy na randomnych poziciach lenže pickupy sa mi spawnu ale ked zoberiem HP pickup tak mi to da vestu a nie HP. Tu je kód: //tu spustam ten timer ocmd:arena(playerid,params[]) { if(jevarene[playerid] == 1)return SendClientMessage(playerid,0xFFAAFF,"Už si v arene,pre odchod použi /exit"); GetPlayerPos(playerid,X,Y,Z); SetTimerEx("pickupy",60000,false,"i",playerid); jevarene[playerid] = 1; GameTextForPlayer(playerid,"~r~Bol si pripojeny ~b~ do areny pre ~w~ odchod pouzi /exit",5000,5); SetPlayerPos(playerid,40.7208,1531.5510,12.7500); SetPlayerVirtualWorld(playerid,1); return 1; } //public timeru public pickupy(playerid) { new pickups = random(6); switch (pickups) { case 0:hppickup1[playerid] = CreatePickup(1240,1,36.5012,1558.5099,13.8007,1); case 1:hppickup2[playerid] = CreatePickup(1240,1,14.9635,1521.3167,14.9781,1); case 2:hppickup3[playerid] = CreatePickup(1240,1,15.5463,1485.9327,12.7500,1); case 3:vestapickup1[playerid] = CreatePickup(1242,1,-27.2449,1486.5269,13.2496,1); case 4:vestapickup2[playerid] = CreatePickup(1242,1,-58.7937,1507.3346,12.7500,1); case 5:vestapickup3[playerid] = CreatePickup(1242,1,-12.7272,1525.0887,12.7500,1); } return 1; } //onplayerpickuppickup public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == hppickup1[playerid]) { SetPlayerHealth(playerid,100); DestroyPickup(hppickup1[playerid]); SetTimerEx("pickupy",60000,false,"i",playerid); } if(pickupid == hppickup2[playerid]) { SetPlayerHealth(playerid,100); DestroyPickup(hppickup2[playerid]); SetTimerEx("pickupy",60000,false,"i",playerid); } if(pickupid == hppickup3[playerid]) { SetPlayerHealth(playerid,100); DestroyPickup(hppickup3[playerid]); SetTimerEx("pickupy",60000,false,"i",playerid); } if(pickupid == vestapickup1[playerid]) { SetPlayerArmour(playerid,100); DestroyPickup(vestapickup1[playerid]); SetTimerEx("pickupy",60000,false,"i",playerid); } if(pickupid == vestapickup2[playerid]) { SetPlayerArmour(playerid,100); DestroyPickup(vestapickup2[playerid]); SetTimerEx("pickupy",60000,false,"i",playerid); } if(pickupid == vestapickup3[playerid]) { SetPlayerArmour(playerid,100); DestroyPickup(vestapickup3[playerid]); SetTimerEx("pickupy",60000,false,"i",playerid); } return 1; } Díky za odpovede. Edited 11. Červenec, 2015 by KuraMa Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 11. Červenec, 2015 Share Odesláno: 11. Červenec, 2015 Říká se tomu prohazování pickupů a je to zákeřné Na místo kde máš deklarována pole: new hppickup1[MAX_PLAYERS] = {-1,...}; // prostě jen přidáš = {-1,...}; k původním deklaracím new hppickup2[MAX_PLAYERS] = {-1,...}; new hppickup3[MAX_PLAYERS] = {-1,...}; new vestapickup1[MAX_PLAYERS] = {-1,...}; new vestapickup1[MAX_PLAYERS] = {-1,...}; new vestapickup1[MAX_PLAYERS] = {-1,...}; OnPlayerPickUpPickup public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == hppickup1[playerid]) { SetPlayerHealth(playerid,100); DestroyPickup(hppickup1[playerid]); hppickup1[playerid] = -1; SetTimerEx("pickupy",60000,false,"i",playerid); return 1; } if(pickupid == hppickup2[playerid]) { SetPlayerHealth(playerid,100); DestroyPickup(hppickup2[playerid]); hppickup2[playerid] = -1; SetTimerEx("pickupy",60000,false,"i",playerid); return 1; } if(pickupid == hppickup3[playerid]) { SetPlayerHealth(playerid,100); DestroyPickup(hppickup3[playerid]); hppickup3[playerid] = -1; SetTimerEx("pickupy",60000,false,"i",playerid); return 1; } if(pickupid == vestapickup1[playerid]) { SetPlayerArmour(playerid,100); DestroyPickup(vestapickup1[playerid]); vestapickup1[playerid] = -1; SetTimerEx("pickupy",60000,false,"i",playerid); return 1; } if(pickupid == vestapickup2[playerid]) { SetPlayerArmour(playerid,100); DestroyPickup(vestapickup2[playerid]); vestapickup2[playerid] = -1; SetTimerEx("pickupy",60000,false,"i",playerid); return 1; } if(pickupid == vestapickup3[playerid]) { SetPlayerArmour(playerid,100); DestroyPickup(vestapickup3[playerid]); vestapickup3[playerid] = -1; SetTimerEx("pickupy",60000,false,"i",playerid); return 1; } return 1; } Při DestroyPickup "vyresetuj" proměnnou ve které máš uložené id (promennaIdPickupu = -1). Přehlednější a hezčí verzi kódu ti sem psát nebudu. Link to comment Share on other sites More sharing options...
Dotaz
KuraMa 0
Mám ďalší problém,je to v tom že si idem spraviť hasiča,lenže neviem ako mám spraviť toto:
Že keď začne misiu a vstupi do CP dám tam CreateExplosion a bude tam ohen lenze ako spravim ze ked uhasi ten ohen tak mu to da money a ukaze dalsi CP ?
Ďakujem za odpovede.
Link to comment
Share on other sites
7 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now