Å ta je ovo?
Ovo je obiÄni include fajl koji vam omogućava da stavite daske za surfanje na server i koristite ih. Može biti korisno ako želite malo zabave.
Video:
http://img716.imageshack.us/img716/2379/surfingsystem.mp4 (http://img716.imageshack.us/img716/2379/surfingsystem.mp4)
Zasluge:
- Y_Less (http://forum.sa-mp.com/member.php?u=29176) za foreach (http://y-less.pastebin.ca/1618846) & GetXYInFrontOfPlayer funkcije,
- ZeeX (http://forum.sa-mp.com/member.php?u=32869) za zcmd (http://forum.sa-mp.com/showthread.php?t=91354) procesor komandi.
Kako instalirati?
Lahko i jednostavno - skinite i stavite surfboard.inc u \pawno\include\ mapu i isto tako napravite i sa foreach.inc i zcmd.inc fajlom.
Otvorite skriptu i stavite ovo:
#include <foreach>
#include <zcmd>
#include <surfboard>
odma iza
#include <a_samp>
Daske za surfanje stavite u OnGameModeInit callback.
Primjer:
/*
CreateSurfboard(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz = 0.0);
*/
CreateSurfboard(1, 548.57208252, -1910.07702637, 0.0, 270.0, 0.0, 180.0);
CreateSurfboard(2, 546.25457764, -1909.92712402, 0.0, 270.0, 0.0, 180.0);
CreateSurfboard(3, 543.55535889, -1909.75854492, 0.0, 270.0, 0.0, 180.0);
CreateSurfboard(1, 540.91290283, -1909.6159668, 0.0, 270.0, 0.0, 180.0);
CreateSurfboard(3, 538.32940674, -1908.54333496, 0.0, 270.0, 0.0, 180.0);
Ove daske za surfanje su locirane kod obale Svete Marije (Santa Maria Beach). Evo vam i spawn kordinate:
542.57208252, -1912.07702637, 2.0
Funkcije:
CreateSurfboard
Sa ovom funkcijom možete staviti dasku za surfanje na server.
@modelid = Model-ID daske za surfanje - važeći modelID-ovi su 1, 2 i 3.
@Float: x = PoÄetna X kordinata daske za surfanje.
@Float: y = PoÄetna Y kordinata daske za surfanje.
@Float: z = PoÄetna Z kordinata daske za surfanje.
@Float: rx = PoÄetna X rotacija daske za surfanje.
@Float: ry = PoÄetna Y rotacija daske za surfanje.
@Float: rz = PoÄetna Z rotacija daske za surfanje.
vrati ID daske za surfanje koji poÄinje sa 0. Ako preÄ'ete MAX_SURFBOARDS defin onda će vam funkcija vratiti nevažeći ID a to je -1.
Primjer:
new
gSurfboard = -1;
public OnGameModeInit()
{
gSurfboard = CreateSurfboard(1, 548.57208252, -1910.07702637, 0.0, 270.0, 0.0, 180.0);
return true;
}
DestroySurfboard
Sa ovom funkcijom možete ukloniti dasku za surfanje sa servera.
@sbid = ID daske za surfanje.
vrati true ako daska za surfanje postoji na serveru i false ako ne.
Primjer:
DestroySurfboard(gSurfboard);
IsSurfboardCreated
Sa ovom funkcijom možete provjeriti da li daska za surfanje postoji na serveru.
@sbid = ID daske za surfanje.
vrati true ako daska za surfanje postoji na serveru i false ako ne.
Primjer:
if(IsSurfboardCreated(gSurfboard)) printf("Daska za surfanje već postoji na serveru.");
else printf("Daska za surfanje NE postoji na serveru.");
StopSurfboard
Sa ovom funkcijom možete zaustaviti dasku za surfanje.
@sbid = ID daske za surfanje.
vrati true ako daska za surfanje postoji na serveru i false ako ne.
Primjer:
StopSurfboard(gSurfboard);
RespawnSurfboard
Sa ovom funkcijom možete re-spawnati dasku za surfanje.
@sbid = ID daske za surfanje.
vrati true ako daska za surfanje postoji na serveru i false ako ne.
Primjer:
RespawnSurfboard(gSurfboard);
SetSurfboardSpeed
Sa ovom funkcijom možete staviti brzinu daski za surfanje.
@sbid = ID daske za surfanje.
@surfspeed = Brzina koju želite staviti daski za surfanje.
vrati true ako daska za surfanje postoji na serveru i false ako ne.
Ako stavite brzinu koja je veća od MAX_SURFBOARD_SPEED onda će funkcija automatsko staviti brzinu koja je definirana sa MAX_SURFBOARD_SPEED.
Primjer:
Ovo će staviti brzinu daske za surfanje na 3.5:
SetSurfboardSpeed(gSurfboard, 3.5);
Ovo će staviti brzinu daske za surfanje na maksimum (koji je definiran sa MAX_SURFBOARD_SPEED):
SetSurfboardSpeed(gSurfboard);
IsPlayerAtSurfboard
Sa ovom funkcijom možete provjeriti da li je igraÄ blizu daske za surfanje.
@playerid = ID igraÄa.
@sbid = ID daske za surfanje.
vrati true ako je igraÄ blizu daske za surfanje i false ako nije.
Primjer:
if(IsPlayerAtSurfboard(playerid, gSurfboard)) printf("IgraÄ je blizu daske za surfanje sa ID-om %i.", gSurfboard);
else printf("IgraÄ NIJE blizu daske za surfanje sa ID-om %i.", gSurfboard);
IsPlayerAtAnySurfboard
Sa ovom funkcijom možete provjeriti da li je igraÄ blizu bilo koje daske za surfanje.
@playerid = ID igraÄa.
vrati ID daske za surfanje koji poÄinje sa 0 ako je igraÄ blizu bilo koje daske i -1 ako nije.
Primjer:
new
gSurfboard = IsPlayerAtAnySurfboard(playerid);
if(gSurfboard != -1) printf("IgraÄ je blizu daske za surfanje sa ID-om %i.", gSurfboard);
else printf("IgraÄ nije blizu ni jedne daske za surfanje");
Defini:
#define MAX_SURFBOARDS (5)
#define MAX_SURFBOARD_SPEED (5.0)
MAX_SURFBOARDS - Maksimalni broj daski za surfanje koji dopušta skripti da ih stavi na server.
MAX_SURFBOARD_SPEED - Maksimalna brzina daske za surfanje. Ne bi smjela biti prevelika, jer inaÄe ćete pasti sa daske za surfanje ako je brzina prevelika.
Kako dobiti kordinate za daske za surfanje?
Pokrenite server ili se konektajte na jedan i odiÄ'ite na poziciju gdje želite imati dasku za surfanje. Onda upotrijebite /save komandu i kad ste zavrÅ¡ili sa time onda otiÄ'ite u savedpositions.txt fajl i izvadite svoje kordinate (trebate samo x i y, najbolje je da stavite z kordinatu na 0.0 - level mora).
Stavite x rotaciju na 270.0 i y rotaciju na 0.0. Z rotacija je rotacija daske za surfanje.
Skini:
(http://nca.uwo.ca/headsetclinic/img/Download.png) (http://solidfiles.com/d/11b0/)
Ostalo:
Ako želite poÄeti surfati, onda stanite pored daske za surfanje i koristite "/surf" komandu. Ako želite prestati sa surfanjem, onda koristite "/surf" komandu opet.
Koristite tipke sa strelicama (GORE, DOLE, LIJEVO i DESNO) da kontrolirate kretanje daske za surfanje.
Kad izbrišete zadnju dasku za surfanje sa servera onda će tajmer stati, tako da vi nemate nikakve brige i ne trebate ništa raditi. I kad opet dodate prvu dasku za surfanje na server, onda će se tajmer opet sam pokrenuti.
Ako padnete sa daske za surfanje, onda će se daska za surfanje automatsko re-spawnati. Isto tako će se automatsko respawnati ako daska za surfanje uleti u neki objekt (primjer - planina).
Nadam se da vam se sviÄ'a,
Correlli
Lepo od tebe Correlli posto nadjes vremena i za BS pored tvog moda! 100/10
perfektno :)
OdliÄno!
Odlicno odradjeno nema sta, ali malo je nerealno jer nema talasa, a ja nisam video da neko surf ovako na moru
Ipak tesko je napraviti i svaka ti cast 10/10
Sjuper-odlicno :D
Pa ti kad ovakve stvari objavljujes.... Sta ce tek na modu sve biti.... ??? Nesmem ni da zamislim :D
Dobra stvar :P Zanimljivo je ono kad se pokupiti tamo pa se jurite i tako :D
Stavio sam novu verziju. Popravio sam jedan bug i dodao par novih funkcija (StopSurfboard, RespawnSurfboard, SetSurfboardSpeed) - više informacija u prvom postu.
Svaka cast! Svida mi se mozda stavim na svoj server!
Citat: â–º|Slick|Crack|â—,, poslato Novembar 05, 2010, 20:05:11 POSLE PODNE
Svaka cast! Svida mi se mozda stavim na svoj server!
Slazem se... Ali znas kakvih ljudi ima! Odma ce da kazu da ti je server prepun FilterScripti! Kako si sve skinuo na gotovo itd....
ovo nije FS :D tako da ne mogu to da kazu xD
Citat: Marjan_DeFox poslato Novembar 05, 2010, 20:11:16 POSLE PODNE
Odma ce da kazu da ti je server prepun FilterScripti! Kako si sve skinuo na gotovo itd....
Pa zašto misliš da objavljujem ovdje skripte? Pa naravno da ih ljudi koriste. Pusti druge neka govore šta žele.
Lux je ovo tovja scripta?
Hahaha koj lik da je to njegova scripta hahahahahahahahahahahha!
Super je ovoo..... ;)
Za ovo i onaj tornado moj maleni edit vidim mesto u svom serveru ...
xD..Kako Crazy stvar..:D
super stvar :D
Na ovo sam zaboravio. Pojavlja se problem ako netko surfa i neki igraÄ pokuÅ¡a da surfa na istoj toj daski za surfanje.
Ovo možete popraviti i sami:
stock IsSurfboardOccupied(sbid)
{
if(sbid < 0 || sbid > MAX_SURFBOARDS || !IsSurfboardCreated(sbid)) return INVALID_PLAYER_ID;
foreach(Player, u)
{
if((GetPVarInt(u, "surfboardID") - 1) == sbid) return u;
}
return INVALID_PLAYER_ID;
}
i dodajte ovu kodu u /surf komandu (poslije if-stejtmenta koji provjerava da li je igraÄ blizu koje daske za surfanje):
new
isOccupied = IsSurfboardOccupied(sbid);
if(isOccupied != INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFFFFFFFF, "(surfing) Someone is already surfing on this surfboard!");
/* Ostala koda za poÄetak surfanja. */