Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van. 1
Segítségkérés / Code« Dátum: 2012. január 28. - 19:11:37 »
Sziasztok!
Kellene egy olyan CODE ami arra szolgálna hogyha valaki hirdetni akarna akkor banolják... 3
Segítségkérés / Ez van??« Dátum: 2012. január 28. - 17:12:34 »
Az oké de ez a z editelt mód nincs meg valakinek?
Dupla hozzászólás automatikusan összefûzve. ( 2012. január 28. - 17:14:45 ) Idézetet írta: kuglof date=1327766924\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"16213\" data-ipsquote-contentclass=\"forums_Topic nem érdemes netröl töltött modal szerot inditani mert a fél gyerek korod elmegy vele én a 0 árol irom a mod om én már félig készSegitenék,csak ha kell módírásban csak mert ez a gyerek átbaszott és hajt a bosszú csak társam nincs mert hát ki lenne ? A barátaim hülyék ehhez 4
Segítségkérés / Ez van??« Dátum: 2012. január 28. - 17:04:22 »
Én scriptereket keresnék most én is az vagyok a dt módot kéne átírni host is van meg minden
5
Segítségkérés / Ez van??« Dátum: 2012. január 28. - 16:59:44 »
esetleg ezt kitõl lehetne megkapni
6
Segítségkérés / Ez van??« Dátum: 2012. január 28. - 16:47:42 »
Ez nem az nem ilyen a dt mód nekem is az van meg és az más
8
Segítségkérés / /Me autó üzenet« Dátum: 2012. január 28. - 13:36:10 »
Sziasztok!
Csináltam egy egyszerû kis kódot aminek nem tudom mi a baja a lényege ha a kocsi hp.ja lemegy akkor kap a játékos egy üzenetet A kód:[pawn]// This is a comment // uncomment the line below if you want to write a filterscript //#define FILTERSCRIPT #include <a_samp> #if defined FILTERSCRIPT new bool:MessageSent[MAX_PLAYERS]; new VHP[MAX_PLAYERS][MAX_VEHICLES] = 0; public OnFilterScriptInit() { print(\"\\n--------------------------------------\"); print(\" Blank Filterscript by your name here\"); print(\"--------------------------------------\\n\"); return 1; } public OnFilterScriptExit() { return 1; } #else main() { print(\"\\n----------------------------------\"); print(\" Blank Gamemode by your name here\"); print(\"----------------------------------\\n\"); } #endif public OnGameModeInit() { // Don't use these lines if it\'s a filterscript SetGameModeText(\"Blank Script\"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } public OnGameModeExit() { return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnPlayerConnect(playerid) { MessageSent[playerid] = false; SetTimerEx(\"VehHP\",1000,1,\"i\",playerid); return 1; } public OnPlayerDisconnect(playerid, reason) { return 1; } public OnPlayerSpawn(playerid) { return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp(\"/mycommand\", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } forward VehHP(playerid); public VehHP(playerid) { new hp; new vehid = GetPlayerVehicleID(playerid); GetVehicleHealth(vehid,hp); VHP[playerid][vehid] = hp; SetTimerEx(\"VehHP2\",500,1,\"i\",playerid); return 1; } forward VehHP2(playerid); public VehHP2(playerid) { new hp; new vehid = GetPlayerVehicleID(playerid); GetVehicleHealth(vehid,hp); if(hp < VHP[playerid][vehid] && MessageSent[playerid] == false) { SendClientMessage(playerid,0xFF0000FF,\"Ütköztél!Ilyenkor használd a /me parancsot[PL:/me beveri a fejét de nem lesz komolyabb baja]\"); MessageSent[playerid] = true; } else return 0; return 1; }[/pawn] Az erorrok: [pawn]C:\\Users\\Rendszergazda\\Documents\\EZ A PANWO MENTÉSEK\\me.pwn(57) : error 017: undefined symbol \"MessageSent\" C:\\Users\\Rendszergazda\\Documents\\EZ A PANWO MENTÉSEK\\me.pwn(57) : warning 215: expression has no effect C:\\Users\\Rendszergazda\\Documents\\EZ A PANWO MENTÉSEK\\me.pwn(57) : error 001: expected token: \";\", but found \"]\" C:\\Users\\Rendszergazda\\Documents\\EZ A PANWO MENTÉSEK\\me.pwn(57) : error 029: invalid expression, assumed zero C:\\Users\\Rendszergazda\\Documents\\EZ A PANWO MENTÉSEK\\me.pwn(57) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 4 Errors. [/pawn] Mi a gáz nem vágom 9
Fórum Archívum (Témák/Fórumok) / PredlineRPG - Trolling« Dátum: 2012. január 28. - 11:57:11 »
Kedves Játékos a szervere nem rég indult most kezdünk belelendülni csak az elmúlt egy hétben 25 bant adtunk ki máskor írj reportott ne fáradj videokkal
Dupla hozzászólás automatikusan összefûzve. ( 2012. január 28. - 12:11:15 ) Minden szereveren vannak nonosok nem értem egy most nyíló szerverenek miért kell így lerontani a hírnevét írj fórumra vagy valami és intészkedünk egyenlõre kellenek a playerek most dolgozunk a z írtáson Dupla hozzászólás automatikusan összefûzve. ( 2012. január 28. - 12:12:28 ) a kocsi Dolgot megoldjuk sajnos ott hagyák az autókat mint a tyúkok a szarukat 10
Segítségkérés / Bug Leáll A SZERVER« Dátum: 2012. január 27. - 21:27:29 »
Sziasztok a kövi történt lezsedtem ezt: http://forum.sa-mp.com/showthread.php?t=282180
Beirom azt hogy createcamera és leáll a szerver Ujraindul ezt tettem bea scriptfiles mappába ez a neve: [pawn]Cameras.ini[/pawn] nem vagyok jó angolos mi a gáz?? valamit elolvastam? 11
Törölt RP Szerverek / [HUN] Predline RPG @ sunwell.hu [**.**.**.**:****]« Dátum: 2012. január 27. - 18:38:00 »
Sziasztok/Szia
Elõszó: Nagy örömmel jelentem be hogy az elsõ Rp szerverem megnyitott 1-2 éve tanulom a pawnot gondoltam megpróbálok valamit kezdeni a tudásommal Hát összeültem 1-2 mapperel és belefogtunk... Sajnos nem teljesen saját egy publicált rpg mód amit teljesen át alakítottunk De kezdésnek szerintem ez is jó... Nah szóval most ott tartok hogy 1 hónapja megy és 10 fölött vannak rajta gondoltam elkezdem hirdetni egy picit nem szeretnék röviden fogalmazni Elõszó: Szóval mindenkinek tudnia kell hogy hogy ez egy rp szerver tehát nem mint a \"barmok\" vadulunk rajta így vannak rajta lévõ szabályok: Elhanyagolhatatlan kifejezések: OOC - /b, /rb parancs. Szerepen kívüli szöveg. DB – Driveby kocsival való ölés. Ráhajtasz az illetõre, és nem szálsz le róla. TILOS! SK – Spawnkill újraéled a játékos és te ismét lelövöd. TILOS! DM – Deatmatch ok nélkül való öldöklés. TILOS! RK – Revengekill megöl egy ember és te bosszút szõsz ellene, amiért megölt. TILOS! MG – Metagaiming máshonnan tudsz meg információkat a játékba (pl.: TS.-rõl hallasz valamit, azt felhasználod a szerveren). TILOS! PG – Powergaiming rád fogják a fegyvert és te elkezdesz össze-vissza rohangálni, verni az illetõt… TILOS! Ezek az alapok aki játszani kezd a szerveren annak ezt tudnia kell! -------------------------------------------------------------------------------------------------------------------------------------------------------------- Munkák: Leaders Munkák: -Rendõrség -taxi -rádiós -mentõ -Szerelõ Sima munkák: -szabó -pizza futár -kamionos (Még készülõben) -cement szállító -Úttisztitó -Testõrség (ez polgármesteri kicsit leader kicsit nem) -------------------------------------------------------------------------------------------------------------------------------------------------------------- Parancsok: \"/k /s /b /me /do /próba /kilépmunka /parkol /autóvesz /ajtó /kötözés /kikötözés /személyi /kocsim /kölcsönkocsim /házam /autóelad /eladautó\"); \"/felhív /letesz /telefonkönyv /spawn /report /adminok /tankolás /hirdetés /jogsi /cpdel /fizet /kölcsönautó\"); \"/mennyi /stats /jelszóváltás /szintlépés /civilruha /munkaruha /házvesz /eladház /be /ki /házam /112 /eldobkulcs /felsegít /leállít\"); Ezek a sima alap parancsok még jönnének ide a rendõr mentõs parancsok stb -------------------------------------------------------------------------------------------------------------------------------------------------------------- Szerver adatai: -Slot: 30 -Mapp: Két kisváros [Las Payadas,El Queprados -Aminok:Még nem végleges tgf on Szerver ip:**.**.**.**:**** Hivatalos fórum ezen még nem dolgoztunk sokat:http://predlinerpg.sunwell.hu/ -------------------------------------------------------------------------------------------------------------------------------------------------------------- Legfõbb Dolgok: Olyan Játékosokat várunk akik Szeretik az RP-t és nem nonosak Ha szerettél volna postás vagy esetleg pizzaszállító lenni, de valami oknál fogva ez nem sikerült, itt megteheted. Lehetsz még szerelõ és mentõs is. Emellett még rengeteg munka és szórakozás vár rád. Remek Admin csapat lesz a segítségedre, akiket bármikor hívhatsz, ha problémád van. A szerveren tilos bármilyen csalást használni, végleges kizárással büntetjük. Alapíts családot, legyél híres vagy gazdag. Legyen bandád vagy saját vállalkozásod. Legyél a legelismertebb rádiós vagy a leggyorsabb taxis. Legyél a legjobb gyorsulási versenyzõ vagy legyél a legügyesebb rabló. Legyél a legjobb cementszállító vagy fogd ki te a legnagyobb halakat. De, ha unod a pörgést, élheted a saját, nyugodt életed. Számos szórakoztató és izgalmas dolog várja a szerverre érkezõket. A szerver belépésekor kérni fog tõled egy jelszót, amit kétszer kell majd beírnod. Egyik lesz a regisztráció, másik lesz a belépés. Ha ez sikerült, utána jön egy RP teszt. Ha valamit elrontasz, a szerver ki fog rúgni. Nem biztos, hogy az a rossz, ami után kirúgott. De, hogy ezt elkerüljétek, olvasgassátok a szabályzatot, amit megtaláltok a szabályzat menüpont alatt. Amit itt elmondtam, kis része annak, amivel találkozhatsz ebben a virtuális életben. Folyamatosan frissítjük a szervert. Ha kitartó vagy, bármit elérhetsz. Rengeteg verseny és játék lesz a szerveren, amiben nyerhetsz is. Bármit csinálsz, hasznodra válik, te alakítod a sorsod. Tömegközlekedés Szabályzat Mit is jelent az RP? Role Play, azaz szerepjáték. A karaktered egy szerepet alakít, aki nem egyenlõ a te személyeddel. Ez alapján a játékot két síkra oszthatjuk. A két sík neve: OOC és IC! Az OOC sík, (Out Of Character) az te magad vagy, az az ember aki ül a gép elõtt és nyomogatja a gombokat. Az IC sík, az a karaktered, akit te alakítasz! Sokaknak ezt nehéz megkülönböztetni. OOC beszélhetsz olyan dolgokról, mint, hogy \"szerver\", \"admin\". IC pedig bármirõl, ami szerinted beleillik a karaktered szerepébe. Fontos fogalmak: DM vagyis a DeathMatch: oknélküli gyilkosság RK vagyis a Revenge Kill: halál utáni bosszú (megölt valaki, és visszamész oda ahol megölt és megölöd) MG vagyis a MetaGaming: szerepen kivüli információ felhasználása szerepben SK vagyis a SpawnKill: valakit ott megölni ahova spawnol (pl kijön egy épületbõl) DB vagyis a Drive By: ha ráálsz valakire kocsival,vagy folyamtosan elütöd és így megölöd PG vagyis a PowerGaming: olyan dolgot teszel ami a valóságban lehetetlen, vagy nem mernéd megtenni Vezetés: - Vezetni úgy kell, mint a való életben, a JOBB oldalon. - A piros lámpánál meg kell állni! ( ha átmész és meglátja egy rendõr akkor megbírságolhat) - Gyorshajtás: Lehetõleg ne a városban, ha azonban a rendõr bemér a trafival akkor megy a csekk nincs mese - Kötelezõ megállni ha szól a rendõr, hogy állj félre! TILOS rögtön elmenekülni. Kivéve, hogyha tudod, hogy köröznek. - Oszlopok: Egyet-kettõt kiütsz nem gond. Egymás után sokat kiütni TILOS! - A nonRP elkerülése érdekében, a rendõr sokkolhat, majd bilincset rakhat rád ha rossz vagy. A /me használata: A /me-t a SAJÁT láthatatlan cselekvésekre lehet használni (olyanokra amire nincs animáció), csakis magadra, más játékost NEM irányíthatsz vele, rá kiható cselekvést sem írhatsz bele. Itt van egy-két HELYES példa, a /me használatára. * Valaki megüti magát de jól van. * X_Y beindítja az autót. * Valaki megnézi a karóráján, hogy mennyi az idõ. És itt van egy-két HELYTELEN példa is * Valaki beteszi X_Y-t a kocsijába * X_Y megfogja és belelöki a tóba X_Y-t * Valaki megy az autójával Használata Kötelezõ minden esetben!! (/me elmulasztásáért büntetés jár, kezdetben adminjail, majd warn) A /próba használat: Ennél a parancsnál kicsit szabadabb vagy, ugyanis az adott dolog vagy sikerül vagy nem. Már megengedett a másik játékos KIS mértékben való irányítása. Csakis egyszer lehet beírni! (tilos floodolni: addig írni amíg nem sikerül) Egy-két példa, a HELYES /pr használatára: * X_Y megpróbál kirabolni és sikerül is neki * X_Y megpróbál beindítani a motort de nem sikerül neki * X_Y megpróbál kihúzni a vízbõl de nem sikerül neki A /do használata: Olyan dolgokra jó, ami a közeledben történik. Ezzel is TILOS irányítani a másik embert. Egy-két példa, a HELYES /do használatára: * [ESEMÉNY] Kidõlt egy oszlop. * [ESEMÉNY] Hangos robaj hallatszik, ugyanis egy karambol történt nem messze. Fontos Tudnivalók: - IRL [in Real Life] : való élet - IC [in Character] : szerepen belüli dolgok,avagy azok a dolgok amik játékon belül történnek a karaktereddel. - OOC [Out Of Character] : szerepen kívüli dolgok, avagy azok amik a való életben történnek és nem a játékon belül a karakteremddel Büntetések: - Mindenekfelett tiszteld az adminokat!! Ha nem tiszteled õket akár bann is lehet a jutalmad! - A szabályok nem ismerése nem mentesít azok betartása alól! - A szerveren a trágár szavak használata IC és OOC is egyaránt TILOS! - Az ADMINOK és a SZERVER trágár szavakkal való minõsítése: BAN-t von maga után! - Multiacc és Cheat esetén ÖRÖK BAN! - A szerveren 5 figyelmeztetéses rendszer van. A szerver az 5. warn (figyelmeztetés) után automatikusan BANNOL! 12
Segítségkérés / Segitség[trafi]Textdraw error« Dátum: 2012. január 27. - 16:53:17 »
nem jó a pawno beakad és leáll a szerver
13
Törölt RP Szerverek / PredlineRPG 3.D« Dátum: 2012. január 25. - 18:02:23 »
Sziasztok!
Végre enlindult az elsõ RPG-s szerverem amely egy hónapja fut... Hála az égnek nagy sikere lett és ma már 14-16 ember között mozog a létszámunk Hát nézzük mi a helyzet: Parancsok: Kicsit röviden vannak de jók: /k /s /b /me /do /próba /kilépmunka /parkol /autóvesz /ajtó /kötözés /kikötözés /személyi /kocsim /kölcsönkocsim /házam /autóelad /eladautó\"); /felhív /letesz /telefonkönyv /spawn /report /adminok /tankolás /hirdetés /jogsi /cpdel /fizet /kölcsönautó\"); /mennyi /stats /jelszóváltás /szintlépés /civilruha /munkaruha /házvesz /eladház /be /ki /házam /112 /eldobkulcs /felsegít /leállít\"); Munkák: Rendõr -mentös -útisztitó -taxis -pizza futár -szerelõ -szabó -tûzoltó -nagyából ennyi A szerver megpróbál mident megtenni hogy jól érezd magad emiatt más mint a többi RPGS szerver Mostmár Teljesen új mappal vár a szerver Rekord ember:24 Videó:- Adatok [pawn]HostName: [újmapp][új script][HUN] Predline RPG @ sunwell.hu Address: 91.82.84.190:7767 Players: 15 / 30 Ping: 29 Mode: Paramcity RolePlay [HUN]hun Map: El Quebrados+hq+sztriptíz[/pawn] Várunk titeket hali! 14
Segítségkérés / ??:O?? Server closed the connection.« Dátum: 2012. január 25. - 17:40:06 »
Gondolom cry Rpgd van vagy nem?
Ha ien frissisd a puginjaid és a módot fusd át 0.3D és pawnoval ÿ(Ezt megteheted más moddal is)´ 15
Segítségkérés / Segitség[trafi]Textdraw error« Dátum: 2012. január 25. - 17:28:05 »
Sziasztok letöltöttem egy ilyen trafis scriptet És olyan hogyha átmész rajta akkor ilyen fehér lesszs egy pillanatra a képernyõd mintha fotoztak volna
nah ez bebugolt miveé amikor belépek mindig ilyen fehér a képernyõ valamint ha resizem eltüik de akkor meg nem töltõdik be mi a baj pls help itt a kod : [pawn]/* gCamera - Speedcamera in SA-MP WITH FLASH EFFECT! V1.1 - Released on 10-04-2011 (Updated at 12-04-2011) Filterscript version with ingame speedcam generator! ˆGamer931215 I want to thank my friend HighFlyer in this release for some tips and testing it (like textlabels, using a streamer, etc) ! Use at own risk, do NOT re-release,mirror,sell it or even worse: clame this as your own! */ #include <a_samp> #include <zcmd> #include <YSI/y_ini> //=================================================================================================== // Settings //=================================================================================================== // SETTING: VALUE: Discription: #define CAMERA_LIMIT 100 //Max loaded cameras (keep this as low as possible for the best performance) #define CAMERA_UPDATE_INTERVAL 750 //update interval of all speedcams (in miliseconds) #define CAMERA_FLASH_TIME 1200 //ammount of miliseconds until the \"flash\" effect gets removed again #define CAMERA_DIALOG_RANGE 1337 //dialog ID range (Example: 0 will take dialogid\'s 0 - 9) #define CAMERA_USEMPH 0 //toggles camera using mph by default (0=kmh, 1=mph) #define CAMERA_LABEL_COLOR 0xFF000FFF //The default color of the camera\'s label #define CAMERA_PERSPECTIVE false //Sets playercamera temporary at the camera\'s position while flashing //streamer options (will be used if STREAMER_ENABLED is set on true) #define STREAMER_ENABLED false //uses a streamer (true/false) #define STREAMER_ADD CreateDynamicObject //put here at the value the command your streamer uses to make an object (CreateDynamicObject by default) #define STREAMER_REMOVE DestroyDynamicObject //put here at the value the command your streamer uses to remove an object (STREAMER_REMOVE by default) #if STREAMER_ENABLED == true //ignore this line #include streamer //put your include name here #endif //ignore this line //=================================================================================================== // Variables //=================================================================================================== #define DIALOG_MAIN CAMERA_DIALOG_RANGE #define DIALOG_RANGE CAMERA_DIALOG_RANGE +1 #define DIALOG_LIMIT CAMERA_DIALOG_RANGE +2 #define DIALOG_FINE CAMERA_DIALOG_RANGE +3 #define DIALOG_EDIT CAMERA_DIALOG_RANGE +4 #define DIALOG_EANGLE CAMERA_DIALOG_RANGE +5 #define DIALOG_ELIMIT CAMERA_DIALOG_RANGE +6 #define DIALOG_ERANGE CAMERA_DIALOG_RANGE +7 #define DIALOG_EFINE CAMERA_DIALOG_RANGE +8 #define DIALOG_ETYPE CAMERA_DIALOG_RANGE +9 #define DIALOG_LABEL CAMERA_DIALOG_RANGE +10 #define COLOR_RED 0xFF1E00FF #define COLOR_GREEN 0x05FF00FF enum _camera {Float:_x,Float:_y,Float:_z,Float:_rot,_range,_limit,_fine,_usemph,_objectid,bool:_active,bool:_activelabel,_labeltxt[128],Text3D:_label} new SpeedCameras[CAMERA_LIMIT][_camera],loaded_cameras = 0,Text:flash; //stocks for attaching labels to camera (must be defined before use, thats why this one is at the top) stock Text3D:AttachLabelToCamera(cameraid,text[]) { new position,buffer[128];format(buffer,sizeof buffer,\"%s\",text); for(new i = 0;strfind(buffer,\"\\\\n\",true) != -1;i++) { position = strfind(buffer,\"\\\\n\",true); strdel(buffer,position,position +2); strins(buffer,\"\\r\\n\",position,sizeof(buffer)); } return Create3DTextLabel(buffer,CAMERA_LABEL_COLOR,SpeedCameras[cameraid][_x],SpeedCameras[cameraid][_y],SpeedCameras[cameraid][_z] +7,100,0,0); } stock UpdateCameraLabel(Text3D:labelid,text[]) { new position,buffer[128];format(buffer,sizeof buffer,\"%s\",text); for(new i = 0;strfind(buffer,\"\\\\n\",true) != -1;i++) { position = strfind(buffer,\"\\\\n\",true); strdel(buffer,position,position +2); strins(buffer,\"\\r\\n\",position,sizeof(buffer)); } return Update3DTextLabelText(labelid,CAMERA_LABEL_COLOR,buffer); } //=================================================================================================== // Initialize //=================================================================================================== public OnFilterScriptInit() { SetTimer(\"UpdateCameras\",CAMERA_UPDATE_INTERVAL,true); flash = TextDrawCreate(-20.000000,2.000000,\"|\"); TextDrawUseBox(flash,1); TextDrawBoxColor(flash,0xffffff66); TextDrawTextSize(flash,660.000000,22.000000); TextDrawAlignment(flash,0); TextDrawBackgroundColor(flash,0x000000ff); TextDrawFont(flash,3); TextDrawLetterSize(flash,1.000000,52.200000); TextDrawColor(flash,0xffffffff); TextDrawSetOutline(flash,1); TextDrawSetProportional(flash,1); TextDrawSetShadow(flash,1); print(\"====================================\"); print(\"| gCamera V1.0 |\"); print(\"| ˆGamer931215 |\"); print(\"====================================\"); print(\"Initializing...\"); LoadCameras(); return 1; } public OnFilterScriptExit() { print(\"====================================\"); print(\"| gCamera V1.0 |\"); print(\"| ˆGamer931215 |\"); print(\"====================================\"); RemoveCameras(); print(\"All cameras have been removed.\"); return 1; } //=================================================================================================== // Commands //=================================================================================================== COMMAND:gcam(playerid,params[]) { if(!IsPlayerAdmin(playerid)) return 0; ShowPlayerDialog(playerid,DIALOG_MAIN,DIALOG_STYLE_LIST,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Main menu\",\"{37FF00}Create speedcamera\\n\\nGet closest speedcamera ID\\nEdit closest speedcamera\\n{FF1400}Delete closest speedcamera\\n{FF1400}Delete all speedcameras\",\"OK\",\"Cancel\"); return 1; } //=================================================================================================== // Callbacks //=================================================================================================== public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(!response) { DeletePVar(playerid,\"range\"); DeletePVar(playerid,\"limit\"); DeletePVar(playerid,\"fine\"); DeletePVar(playerid,\"selected\"); return 1; } switch(dialogid) { //====================================================== // Main menu //====================================================== case DIALOG_MAIN: { switch(listitem) { case 0: ShowPlayerDialog(playerid,DIALOG_RANGE,DIALOG_STYLE_INPUT,\"Insert a range\",\"Please insert a range (recommended: 20-30)\",\"OK\",\"Cancel\"); case 1: { new cam = GetClosestCamera(playerid); if(cam == -1) return SendClientMessage(playerid,COLOR_RED,\"No nearby cameras found!\"); SendClientMessageEx(playerid,COLOR_GREEN,\"sis\",\"The closest cameraID is ID: \",cam,\".\"); } case 2: { new cam = GetClosestCamera(playerid); if(cam == -1) return SendClientMessage(playerid,COLOR_RED,\"No nearby cameras found!\"); SetPVarInt(playerid,\"selected\",cam); ShowPlayerDialog(playerid,DIALOG_EDIT,DIALOG_STYLE_LIST,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor\",\"Change angle\\nChange range\\nChange speedlimit\\nChange fine\\nToggle mph mode\\nAdd/Remove/Edit textlabel\\n{FF1400}Delete camera\",\"OK\",\"Cancel\"); } case 3: { new cam = GetClosestCamera(playerid); if(cam == -1) return SendClientMessage(playerid,COLOR_RED,\"No nearby cameras found!\"); DestroySpeedCam(cam); SendClientMessage(playerid,COLOR_GREEN,\"Camera has been removed.\"); DeletePVar(playerid,\"selected\"); } case 4: { for(new i = 0;i<loaded_cameras +1;i++) { if(SpeedCameras[_active] == true) { DestroySpeedCam(i); } } SendClientMessage(playerid,COLOR_GREEN,\"All speedcameras have been removed.\"); } } } //====================================================== // Making a speedcam //====================================================== case DIALOG_RANGE: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_RANGE,DIALOG_STYLE_INPUT,\"Insert a range\",\"Please insert a range (recommended: 20-30)\",\"OK\",\"Cancel\"); SetPVarInt(playerid,\"range\",strval(inputtext)); ShowPlayerDialog(playerid,DIALOG_LIMIT,DIALOG_STYLE_INPUT,\"Insert a speedlimit\",\"Please insert a speedlimit\",\"OK\",\"Cancel\"); } case DIALOG_LIMIT: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LIMIT,DIALOG_STYLE_INPUT,\"Insert a speedlimit\",\"Please insert a speedlimit\",\"OK\",\"Cancel\"); SetPVarInt(playerid,\"limit\",strval(inputtext)); ShowPlayerDialog(playerid,DIALOG_FINE,DIALOG_STYLE_INPUT,\"Insert a fine\",\"Please insert a fine\",\"OK\",\"Cancel\"); } case DIALOG_FINE: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_FINE,DIALOG_STYLE_INPUT,\"Insert a fine\",\"Please insert a fine\",\"OK\",\"Cancel\"); SetPVarInt(playerid,\"fine\",strval(inputtext)); new Float:x,Float:y,Float:z,Float:angle; GetPlayerPos(playerid,x,y,z);GetPlayerFacingAngle(playerid,angle); angle = angle + 180;if(angle > 360){angle = angle - 360;} new id = CreateSpeedCam(x,y,z -3,angle,GetPVarInt(playerid,\"range\"),GetPVarInt(playerid,\"limit\"),GetPVarInt(playerid,\"fine\"),CAMERA_USEMPH); SetPlayerPos(playerid,x,y+2,z); DeletePVar(playerid,\"range\"); DeletePVar(playerid,\"limit\"); DeletePVar(playerid,\"fine\"); SetPVarInt(playerid,\"selected\",id); ShowPlayerDialog(playerid,DIALOG_EDIT,DIALOG_STYLE_LIST,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor\",\"Change angle\\nChange range\\nChange speedlimit\\nChange fine\\nToggle mph mode\\nAdd/Remove/Edit textlabel\\n{FF1400}Delete camera\",\"OK\",\"Cancel\"); } //====================================================== // Edit menu //====================================================== case DIALOG_EDIT: { switch(listitem) { case 0: ShowPlayerDialog(playerid,DIALOG_EANGLE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Angle\",\"Please enter a new angle\",\"OK\",\"Cancel\"); case 1: ShowPlayerDialog(playerid,DIALOG_ERANGE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Range\",\"Please enter a new range\",\"OK\",\"Cancel\"); case 2: ShowPlayerDialog(playerid,DIALOG_ELIMIT,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Speedlimit\",\"Please enter a new speedlimit\",\"OK\",\"Cancel\"); case 3: ShowPlayerDialog(playerid,DIALOG_EFINE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Fine\",\"Please enter a new fine\",\"OK\",\"Cancel\"); case 4: ShowPlayerDialog(playerid,DIALOG_ETYPE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Mph/Kmh\",\"enter 1 to use mph and 0 for kmh\",\"OK\",\"Cancel\"); case 5: ShowPlayerDialog(playerid,DIALOG_LABEL,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Textlabel\",\"Please fill in the text you want to attach, or leave it empty to remove an existing label!\",\"OK\",\"Cancel\"); case 6: { DestroySpeedCam(GetPVarInt(playerid,\"selected\")); SendClientMessage(playerid,COLOR_GREEN,\"Camera has been removed.\"); DeletePVar(playerid,\"selected\"); } } } //====================================================== // Editing a speedcam //====================================================== case DIALOG_EANGLE: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_EANGLE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Angle\",\"Please enter a new angle\",\"OK\",\"Cancel\"); new id = GetPVarInt(playerid,\"selected\"); new rot = strval(inputtext); rot = rot + 180; if (rot > 360) { rot = rot - 360; } SpeedCameras[id][_rot] = rot; SetObjectRot(SpeedCameras[id][_objectid],0,0,rot); SaveCamera(id); SendClientMessageEx(playerid,COLOR_GREEN,\"sisis\",\"The angle of cameraID \",id,\" has succesfully been updated to \",strval(inputtext),\".\"); } case DIALOG_ERANGE: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_ERANGE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Range\",\"Please enter a new range\",\"OK\",\"Cancel\"); new id = GetPVarInt(playerid,\"selected\"); SpeedCameras[id][_range] = strval(inputtext); SaveCamera(id); SendClientMessageEx(playerid,COLOR_GREEN,\"sisis\",\"The range of cameraID \",id,\" has succesfully been updated to \",strval(inputtext),\".\"); } case DIALOG_ELIMIT: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_ELIMIT,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Speedlimit\",\"Please enter a new Speedlimit\",\"OK\",\"Cancel\"); new id = GetPVarInt(playerid,\"selected\"); SpeedCameras[id][_limit] = strval(inputtext); SaveCamera(id); SendClientMessageEx(playerid,COLOR_GREEN,\"sisis\",\"The speedlimit of cameraID \",id,\" has succesfully been updated to \",strval(inputtext),\".\"); } case DIALOG_EFINE: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_EFINE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Fine\",\"Please enter a new fine\",\"OK\",\"Cancel\"); new id = GetPVarInt(playerid,\"selected\"); SpeedCameras[id][_fine] = strval(inputtext); SaveCamera(id); SendClientMessageEx(playerid,COLOR_GREEN,\"sisis\",\"The fine of cameraID \",GetPVarInt(playerid,\"selected\"),\" has succesfully been updated to \",strval(inputtext),\".\"); } case DIALOG_ETYPE: { if(!strlen(inputtext) || strval(inputtext) != 0 && strval(inputtext) != 1) return ShowPlayerDialog(playerid,DIALOG_ETYPE,DIALOG_STYLE_INPUT,\"{00A5FF}gCamera {FFFFFF}- {FFDC00}Editor - Mph/Kmh\",\"enter 1 to use mph and 0 for kmh\",\"OK\",\"Cancel\"); new id = GetPVarInt(playerid,\"selected\"); SpeedCameras[id][_usemph] = strval(inputtext); if(strval(inputtext) == 1) { SendClientMessageEx(playerid,COLOR_GREEN,\"sis\",\"CameraID \",GetPVarInt(playerid,\"selected\"),\" does now meassure speed in mph.\"); } else { SendClientMessageEx(playerid,COLOR_GREEN,\"sis\",\"CameraID \",GetPVarInt(playerid,\"selected\"),\" does now meassure speed in kmh.\"); } } case DIALOG_LABEL: { new id = GetPVarInt(playerid,\"selected\"); if(!strlen(inputtext)) { if(SpeedCameras[id][_activelabel] == true) { Delete3DTextLabel(SpeedCameras[id][_label]); SpeedCameras[id][_activelabel] = false; SpeedCameras[id][_labeltxt] = 0; } SendClientMessageEx(playerid,COLOR_GREEN,\"sis\",\"The textlabel of cameraID \",GetPVarInt(playerid,\"selected\"),\" has succesfully been removed.\"); } else { if(SpeedCameras[id][_activelabel] == true) { format(SpeedCameras[id][_labeltxt],128,\"%s\",inputtext); UpdateCameraLabel(SpeedCameras[id][_label],inputtext); } else { SpeedCameras[id][_activelabel] = true; format(SpeedCameras[id][_labeltxt],128,\"%s\",inputtext); SpeedCameras[id][_label] = AttachLabelToCamera(id,inputtext); } SendClientMessageEx(playerid,COLOR_GREEN,\"sisss\",\"The textlabel of cameraID \",GetPVarInt(playerid,\"selected\"),\" has succesfully been updated to \",inputtext,\".\"); } SaveCamera(id); } } return 0; } //=================================================================================================== // Functions //=================================================================================================== stock LoadCameras() { new file[64]; for(new i = 0;i<CAMERA_LIMIT;i++) { format(file,sizeof file,\"/SpeedCameras/%i.txt\",i); if(fexist(file)) { INI_ParseFile(file,\"LoadCam\",.bExtra = true,.extra = i); #if STREAMER_ENABLED == true SpeedCameras[_objectid] = STREAMER_ADD(18880,SpeedCameras[_x],SpeedCameras[_y],SpeedCameras[_z],0,0,SpeedCameras[_rot]); #else SpeedCameras[_objectid] = CreateObject(18880,SpeedCameras[_x],SpeedCameras[_y],SpeedCameras[_z],0,0,SpeedCameras[_rot]); #endif SpeedCameras[_active] = true; if(SpeedCameras[_activelabel] == true) { SpeedCameras[_label] = AttachLabelToCamera(i,SpeedCameras[_labeltxt]); } loaded_cameras++; } } printf(\"gCamera has succesfully loaded %i camera(s).\",loaded_cameras); } forward LoadCam(cameraid,name[],value[]); public LoadCam(cameraid,name[],value[]) { INI_Float(\"_x\",SpeedCameras[cameraid][_x]); INI_Float(\"_y\",SpeedCameras[cameraid][_y]); INI_Float(\"_z\",SpeedCameras[cameraid][_z]); INI_Float(\"_rot\",SpeedCameras[cameraid][_rot]); INI_Int(\"_range\",SpeedCameras[cameraid][_range]); INI_Int(\"_limit\",SpeedCameras[cameraid][_limit]); INI_Int(\"_fine\",SpeedCameras[cameraid][_fine]); INI_Int(\"_usemph\",SpeedCameras[cameraid][_usemph]); INI_Bool(\"_activelabel\",SpeedCameras[cameraid][_activelabel]); INI_String(\"_labeltxt\",SpeedCameras[cameraid][_labeltxt],128); return 1; } stock RemoveCameras() { for(new i = 0;i<loaded_cameras +1;i++) { if(SpeedCameras[_active] == true) { #if STREAMER_ENABLED == true STREAMER_REMOVE(SpeedCameras[_objectid]); #else DestroyObject(SpeedCameras[_objectid]); #endif if(SpeedCameras[_activelabel] == true) { Delete3DTextLabel(SpeedCameras[_label]); } } } return 1; } stock generate_id() { new file[64]; for(new i = 0;i<CAMERA_LIMIT;i++) { format(file,sizeof file,\"/SpeedCameras/%i.txt\",i); if(!fexist(file)) return i; } return -1; } stock CreateSpeedCam(Float:x,Float:y,Float:z,Float:rot,range,limit,fine,use_mph = 0) { new newid = generate_id(); if(newid == -1) { print(\"gSpeedcam: ERROR! Cannot create speedcam, max ammount of speedcameras has been reached!\"); return 1; } if (newid == loaded_cameras || newid > loaded_cameras) { loaded_cameras++; } SpeedCameras[newid][_x] = x; SpeedCameras[newid][_y] = y; SpeedCameras[newid][_z] = z; SpeedCameras[newid][_rot] = rot; SpeedCameras[newid][_range] = range; SpeedCameras[newid][_limit] = limit; SpeedCameras[newid][_fine] = fine; SpeedCameras[newid][_usemph] = use_mph; #if STREAMER_ENABLED == true SpeedCameras[newid][_objectid] = STREAMER_ADD(18880,x,y,z,0,0,rot); #else SpeedCameras[newid][_objectid] = CreateObject(18880,x,y,z,0,0,rot); #endif SpeedCameras[newid][_active] = true; SpeedCameras[newid][_activelabel] = false; SpeedCameras[newid][_labeltxt] = 0; new file[64];format(file,sizeof file,\"/SpeedCameras/%i.txt\",newid); new INI:handler = INI_Open(file); INI_WriteFloat(handler,\"_x\",SpeedCameras[newid][_x]); INI_WriteFloat(handler,\"_y\",SpeedCameras[newid][_y]); INI_WriteFloat(handler,\"_z\",SpeedCameras[newid][_z]); INI_WriteFloat(handler,\"_rot\",SpeedCameras[newid][_rot]); INI_WriteInt(handler,\"_range\",SpeedCameras[newid][_range]); INI_WriteInt(handler,\"_limit\",SpeedCameras[newid][_limit]); INI_WriteInt(handler,\"_fine\",SpeedCameras[newid][_fine]); INI_WriteInt(handler,\"_usemph\",SpeedCameras[newid][_usemph]); INI_WriteBool(handler,\"_activelabel\",SpeedCameras[newid][_activelabel]); INI_WriteString(handler,\"_labeltxt\",SpeedCameras[newid][_labeltxt]); INI_Close(handler); return newid; } stock SaveCamera(cameraid) { new file[64];format(file,sizeof file,\"/SpeedCameras/%i.txt\",cameraid); new INI:handler = INI_Open(file); INI_WriteFloat(handler,\"_x\",SpeedCameras[cameraid][_x]); INI_WriteFloat(handler,\"_y\",SpeedCameras[cameraid][_y]); INI_WriteFloat(handler,\"_z\",SpeedCameras[cameraid][_z]); INI_WriteFloat(handler,\"_rot\",SpeedCameras[cameraid][_rot]); INI_WriteInt(handler,\"_range\",SpeedCameras[cameraid][_range]); INI_WriteInt(handler,\"_limit\",SpeedCameras[cameraid][_limit]); INI_WriteInt(handler,\"_fine\",SpeedCameras[cameraid][_fine]); INI_WriteInt(handler,\"_usemph\",SpeedCameras[cameraid][_usemph]); INI_WriteBool(handler,\"_activelabel\",SpeedCameras[cameraid][_activelabel]); INI_WriteString(handler,\"_labeltxt\",SpeedCameras[cameraid][_labeltxt]); INI_Close(handler); } stock DestroySpeedCam(cameraid) { SpeedCameras[cameraid][_active] = false; #if STREAMER_ENABLED == true STREAMER_REMOVE(SpeedCameras[cameraid][_objectid]); #else DestroyObject(SpeedCameras[cameraid][_objectid]); #endif if(SpeedCameras[cameraid][_activelabel] == true) { Delete3DTextLabel(SpeedCameras[cameraid][_label]); } SpeedCameras[cameraid][_activelabel] = false; SpeedCameras[cameraid][_labeltxt] = 0; new file[64];format(file,sizeof file,\"/SpeedCameras/%i.txt\",cameraid); if(fexist(file)){fremove(file);} return 1; } stock SetSpeedCamRange(cameraid,limit) { SpeedCameras[cameraid][_limit] = limit; return 1; } stock SetSpeedCamFine(cameraid,fine) { SpeedCameras[cameraid][_fine] = fine; return 1; } stock Float:GetDistanceBetweenPoints(Float:x,Float:y,Float:tx,Float:ty) { new Float:temp1, Float:temp2; temp1 = x-tx;temp2 = y-ty; return floatsqroot(temp1*temp1+temp2*temp2); } stock GetClosestCamera(playerid) { new Float:distance = 10,Float:temp,Float:x,Float:y,Float:z,current = -1;GetPlayerPos(playerid,x,y,z); for(new i = 0;i<loaded_cameras +1;i++) { if(SpeedCameras[_active] == true) { temp = GetDistanceBetweenPoints(x,y,SpeedCameras[_x],SpeedCameras[_y]); if(temp < distance) { distance = temp; current = i; } } } return current; } stock Float:GetVehicleSpeed(vehicleid,UseMPH = 0) { new Float:speed_x,Float:speed_y,Float:speed_z,Float:temp_speed; GetVehicleVelocity(vehicleid,speed_x,speed_y,speed_z); if(UseMPH == 0) { temp_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667; } else { temp_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*85.4166672; } floatround(temp_speed,floatround_round);return temp_speed; } stock SendClientMessageEx(playerid,color,type[],{Float,_}:...) { new string[128]; for(new i = 0;i<numargs() -2;i++) { switch(type) { case \'s\': { new result[128]; for(new a= 0;getarg(i +3,a) != 0;a++) { result[a] = getarg(i +3,a); } if(!strlen(string)) { format(string,sizeof string,\"%s\",result); } else format(string,sizeof string,\"%s%s\",string,result); } case \'i\': { new result = getarg(i +3); if(!strlen(string)) { format(string,sizeof string,\"%i\",result); } else format(string,sizeof string,\"%s%i\",string,result); |