PDA

View Full Version : [INC] WInts - Wollyho Interiery


wollodya
07/07/2010, 09:53 AM
WInts - Wolly's Interiors

- Topic na PawnoBoxe - (http://pawnobox.net/smf2/index.php?topic=12318)

O scripte:

Nápad vytvoriť tento include som dostal už dávno (asi pred rokom) ale zrealizovať ho som dostal chuť až teraz aj keď s pawnom u skoro vôbec nerobím. Ide o napodobnenie originálnych vstupov do interiérov. Niekedy vidím že sa používa pickup bielej šípky ale myslím si že toto je oveľa efektnejšie.

Náhľad:
http://img24.imageshack.us/img24/5067/samp017io.th.png (http://img24.imageshack.us/i/samp017io.png/)

Video (http://www.youtube.com/watch?v=lCXQWI9ZXEo#normal)


Princíp fungovania:

Princíp je ten že pod podlahou je auto, ktorému som nastavil player objective pomocou SetVehicleParamsForPlayer. Pod autom je ešte objekt aby auto nepadalo do matrixu. Hráč potom vidí len žltú šípku keďže len tá vytŕča zo zeme a všetko ostatné je skryté pod podlahou.


Nevýhody:


žltá šípka nad autom sa mierne odlišuje od originálneho vstupu, je bledšia
na mape sú zobrazované otravné a zbytočné žlté ikonky
šípka mizne (a teda aj ikonky na mape) až pri väčšej vzdialenosti kvôli bugu v SA:MP



Detailnejšie info:

Keďže som to scriptoval skôr so zámerom zrealizovať nápad ako vytvoriť dokonalý script, source tak aj vypadá. Počas práce som narazil na niekoľko bugov a preto namieto prerobenia niektorých vecí inak, som ich len poupravil a šiel ďalej.

Šípka nad autom sa nedá vypnúť pomocou SetVehicleParamsForPlayer. Našťastie ma zachránilo streaming vozidiel v 0.3 a tak sa vypne sama ako náhle sa auto "odstreamuje". Bohužiaľ je to preto závislé od nastavenia vzdialenosti streamovania áut a hráčov v configu.

Include streamuje objekty pod autom pre každého hráča osobitne. Definovaný max. počet objektov.
Obsahuje efektívny script na rozdelenie San Andreas na určitý počet zón (všetko je definovateľné) a streaming áut len v zónach v ktorých je aspoň nejaký hráč, teda v blízkozti nejakej zóny. Momentálne je tam nastavených 100 metrov. To znamená že ak sa hráč nachádza na súradniciach 0 a 0 tak budú aktívne 4 okolité zóny (za predpokladu že počet zón na šírku je párny a v súradniciach 0 a 0 je stred rohov 4 zón). Je to preto aby sa nestalo že vstup bude na okraji jednej zóny a hráč bude na okraji vedľajšej zóny. Síce by bol len pár metrov od neho ale nebude priamo v zóne a preto sa mu nezobrazí. Dôležité je aby počet zón nebol privysoký aby cyklus nebol viac zatažujúci ako keby to bolo vobec bez streamovania cez zóny (momentálne nastavené na 6 × 6, teda 36 zón, každá so šírkou 1000 metrov, plus 100 metrov okolo "aktívne pásmo".

Ako kompromis odporúčam nastaviť stream_distance v server.cfg na 200.0!

Originál vstupy do interiéru v SA:MP sa zobrazia cca pri vzdialenosti 40 metrov. V tomto inc je to nastavené na 50 metrov, samozrejme je to možné zmeniť.

Efekt stmavovania obrazovky som použil Seifader od Seifa, keďže je to celkom jednoducho spravené a nechcel som sa zaoberať ďalšou blbosťou ktorá by iba natiahla čas release.

Nezľaknite nárastu veľkosti amx súboru. Je to spôsobené veľkým počtom premien. Napr. MidoStream FS má skompilovaný asi 2MB.

Nevytvárajte interiéry na nejakých nerovných miestach lebo vám bude vyčnievať auto na povrch.


Inštalácia a použitie:

Inštalácia do módu:

Wints_Init(); strčiť do publicu OnGameModeInit
Wints_Exit;() strčiť do publicu OnGameModeExit
Wints_OnPlayerConnect(playerid); strčiť do publicu OnPlayerConnect
Wints_OnPlayerDisconnect(playerid, reason); strčiť do publicu OnPlayerDisconnect
Wints_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid); strčiť do publicu OnPlayerInteriorChange

Použitie funkcie:

CreateWInterior(Float:arrowX,Float:arrowY,Float:ar rowZ,arrowInterior,Float:targetX,Float:targetY,Flo at:targetZ,Float:targetAngle,targetInterior);

arrowX, arrowY, arrowZ - súradnice kde má byť zobrazená šípka (stačí uložiť cez /save, pozor!, nesmiete byť pri ukladaní pozície vo vozidle lebo bude šípka o čosi nižšie a bude sa sa prechádzať cez podlahu)
arrowInterior - id interiéru kde má byť umiestnená šípka (ak umiestňujete v šípku v nejakej budove, aktuálny interiér zistíte príkazom /interior)
targetX, targetY, targetZ - spawn pozícia kde bude hráč spawnutú po vstupe do interiéru
targetAngle - uhol natočenia hráča pri spawnutí
targetInterior - id interiéru do ktorého má byť hráč spawnutý

Napríklad
CreateWInterior(2127.5737,2379.4404,10.8203,0,246. 3751,109.2462,1003.2188,0.0000,10);
znamená že šípka bude na pozícii 2127.5737,2379.4404,10.8203 v interiéri 0 (von), a pri vstupe bude hráč premiestnený na pozíciu 246.3751,109.2462,1003.2188 s uhlom natočenia hráča 0.000000 do interiéru 10.

Funkciu CreateWInterior treba dať do publicu OnGameModeInit.


Credits:


Seif - Seifader - script na ztmavovanie obrazovky
Luk_Ass - pomoc pri scriptovaní
SpiriX23 - pomoc pri testoch a poskytnutie servera na testy
CorteZz - vytvorenie demo videa
denis1999 (matej) - help with testing



Záver:

Dúfam že nápad niekto využije a spraví lepší a efektívnejší script ako je tento.

Nejaké screeny z testov:
http://pixtube.eu/graphic/thumbs/321788-sa-mp-023-th.png (http://pixtube.eu/share/321788-sa-mp-023.png)http://pixtube.eu/graphic/thumbs/321789-sa-mp-021-th.png (http://pixtube.eu/share/321789-sa-mp-021.png)http://pixtube.eu/graphic/thumbs/321790-sa-mp-015-th.png (http://pixtube.eu/share/321790-sa-mp-015.png)http://pixtube.eu/graphic/thumbs/321791-sa-mp-016-th.png (http://pixtube.eu/share/321791-sa-mp-016.png)http://pixtube.eu/graphic/thumbs/321786-sa-mp-037-th.png (http://pixtube.eu/share/321786-sa-mp-037.png)http://pixtube.eu/graphic/thumbs/321787-sa-mp-027-th.png (http://pixtube.eu/share/321787-sa-mp-027.png)

Aktuálna verzia 1.02

1.00 - release
1.01 - drobné úpravy
1.02 - opravený bug kedy bolo môžné nechcené warpnutie keď je hráč na pozícii Winterioru ale je v inom interiéri ako Winterior

Stiahnutie:

PASTEBIN (http://pawn.pastebin.com/yMs0h2J8)

http://img805.imageshack.us/img805/1479/downloadf.png (http://solidfiles.com/d/64ed/)

wollodya
07/07/2010, 09:54 AM
update na 1.02