SA-MP 0.3a R8 Serveris
Pasikeitimai:
- Šioje versijoje ištaisyta klaida, kuo met kenkėjiška programa prisijungus prie SA-MP tinklo galėtų siųsti papildomą informacijos srautą.
Siuntimas:Windows:
http://files.sa-mp.com/samp03asvr_R8_win32.zipLinux:
http://files.sa-mp.com/samp03asvr_R8.tar.gz#######################################################################################
SA-MP 0.3a R7 Serveris
Pasikeitimai:
- Ištaisyta klaida su PVar list panaudojus DeletePVar() funkc.
-
PVar names use uppercase internally which speeds up the lookups. When you enumerate PVars the name will always be returned in uppercase. You can still use any case for getting/setting.
Siuntimas:Windows:
http://files.sa-mp.com/samp03asvr_R7_win32.zipLinux:
http://files.sa-mp.com/samp03asvr_R7.tar.gz#######################################################################################
SA-MP 0.3a R6 Serveris
Taigi dar vienas greitas atnaujinimas į RC6 versiją.
Pasikeitimai:
- PVar kintamųjų pavadinimuose didžiosios raidės nesiskiria nuo mažųjų. ("id" tas pats kas "ID").
- PVars kintamieji nuo šiol reset'inami po serverio restartavimo.
- Sutvarkytas windows serverio lūžimas dėl kurio buvo kaltas kompiliatorius.
- Žaidėjai turintys modifikacijų nuo šiol bus tikrinami.
Siuntimas:Windows:
http://files.sa-mp.com/samp03asvr_R6_win32.zipLinux:
http://files.sa-mp.com/samp03asvr_R6.tar.gz#######################################################################################
SA-MP 0.3a R5 Serveris
2010m. kovo 23d. SA-MP kūrėjas
Kye išleido naujus SA-MP 0.3a R5 serverio failus. Kaip jis teigia, atnaujinimai buvo daromi kuo greičiau, nes "denial of service" klaidos "atakavo" keletą populiarių SA-MP serverių. Šis atnaujinimas yra skirtas
TIK serverių modams. Naujo cliento atsisiųsti nereikės.
Siuntimas:Windows:
http://files.sa-mp.com/samp03asvr_R5_win32.zipLinux:
http://files.sa-mp.com/samp03asvr_R5.tar.gz
Naujos funkcijos:GetPlayerWeaponState(playerid);
GetPlayerCameraPos(playerid, &Float:x, &Float:y, &Float:z);
GetPlayerCameraFrontVector(playerid, &Float:x, &Float:y, &Float:z);
GetPlayerCameraUpVector(playerid,&Float:x,&Float:y,&Float:z);
SetPVarInt(playerid, varname[], int_value);
GetPVarInt(playerid, varname[]);
SetPVarString(playerid, varname[], string_value[]);
GetPVarString(playerid, varname[], string_return[], len);
SetPVarFloat(playerid, varname[], Float:float_value);
Float:GetPVarFloat(playerid, varname[]);
DeletePVar(playerid, varname[]);
GetPVarsUpperIndex(playerid);
GetPVarNameAtIndex(playerid, index, ret_varname[], ret_len);
GetPVarType(playerid, varname[]);
GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
LimitPlayerMarkerRadius(Float:marker_radius);
Callback'ai:OnVehicleDamageStatusUpdate(vehicleid, playerid);
PVars sistema (Per-player variable system):Viena iš šio atnaujinmo naujovių - tai PVars sistema. Sistema skirta sumažinti paprastų kintamųjų apkrovą serveriui. Trumpai tariant, tai tokie patys kintamieji, kaip ir pvz:
enum pData
{
bool:Logged,
bool:Admin,
Money,
Deaths,
Kills
}
new PlayerData[MAX_PLAYERS][pData];Kokie šios sistemos privalumai, vietoj paprastų masyvų, kuriuose naudojama MAX_PLAYERS kiekis:
1) PVars sistemos kintamuosius galima naudoti tiek gamemode'uose tiek filterscript'uose.
2) PVars sistemos kintamieji yra iškart ištrinami, atsijungus žaidėjui nuo serverio, tam, kad prisijungus kitam žaidėjui su tokiu pačiu ID, nereikėtų jų reset'inti.
3) Šiai sistemai nebereikalinga enum struktūra.
4) Sutaupoma serverio atminties nepriskiriant kokiam nors kintamajam reikšmės.
5) Peržiūrėti/išsaugoti kintamuosius labai paprasta.
6) Jei PVar kintamasis nėra sukurtas, jo reikšmė visąlaik bus 0.
7) PVars kintamieji gali išlaikyti didelės apimties tekstinį srautą, naudojantį nepastovų kiekį atminties.
Funkcijos:
SetPVarInt(playerid, varname[], int_value);
GetPVarInt(playerid, varname[]);
SetPVarString(playerid, varname[], string_value[]);
GetPVarString(playerid, varname[], string_return[], len);
SetPVarFloat(playerid, varname[], Float:float_value);
Float:GetPVarFloat(playerid, varname[]);
DeletePVar(playerid, varname[]);
GetPVarsUpperIndex(playerid);
GetPVarNameAtIndex(playerid, index, ret_varname[], ret_len);
GetPVarType(playerid, varname[]);Kintamųjų rūšys:
#define PLAYER_VARTYPE_NONE 0
#define PLAYER_VARTYPE_INT 1
#define PLAYER_VARTYPE_STRING 2
#define PLAYER_VARTYPE_FLOAT 3
Player markers kontroliavimas:Jei serveryje player markers rėžimas nustatytas į
PLAYER_MARKERS_MODE_GLOBAL - nuo šiol galite nustatyti marker'io matymo distanciją. Pvz:
#define MARKERIO_MATYMAS 50
public OnGameModeInit()
{
LimitPlayerMarkerRadius(MARKERIO_MATYMAS);
}
Transporto priem. žala:Turbūt viena iš smagiausių šio atnaujimo dalių. Nuo šiol galite tikrinti kokią tranp. priemonė patyrė žalą. T.y. - galite sužinoti nuo mašinos durelių būklės iki šviesos žibintų. Visumoje galima informacija tik apie šias tranp. priem. dalis: panels, doors, lights, tires. Funkcijos skirtos gauti/nustatyti šiai informacijai:
GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);Taip pat yra ir atskiras callback'as, kuris bus kviečiamas iškart pasikeitus mašinos būklei:
OnVehicleDamageStatusUpdate(vehicleid, playerid);Demonstracinis pavyzdys:
http://www.youtube.com/watch?v=0HlludTwM7E
Žaidėjo kameros pozicija:Su šiuo atnaujinimu įmanoma sužinoti pasirinkto žaidėjo kameros poziciją/bei kameros pozicijos vektoriaus kryptį.
Pavyzdžiui:
stock SpauzdintiKamerosPoz(playerid)
{
new Float:x[3], Float:[3], Float:[3];
GetPlayerCameraPos(playerid, x[0], y[0], z[0]);
GetPlayerCameraFrontVector(playerid, x[1], y[1], z[1]);
GetPlayerCameraUpVector(playerid, x[2], y[2], z[2]);
printf("Zaidejo kameros pozicija %f,%f,%f.", x[0], y[0], z[0]);
printf("Zaidejo kameros krypties vektorius %f,%f,%f.", x[1], y[1], z[1]);
printf("Zaidejo kameros krypties vektorius %f,%f,%f.", x[2], y[2], z[2]);
return 1;
}
Ginklo būsena:Atsirado galimybė sužinoti ginklo būseną. T.y. įmanoma tikrinti ar ginkle baigiasi kulkos, ar tuo metu ginklas yra užtaisomas ir pan.
Pavyzdys:
stock ArZaidejasUztsitaiso(playerid)
{
if(WEAPONSTATE_RELOADING == GetPlayerWeaponState(playerid)) return 1;
else return 0;
}Ginklo būsenos:
WEAPONSTATE_UNKNOWN -1
WEAPONSTATE_NO_BULLETS 0
WEAPONSTATE_LAST_BULLET 1
WEAPONSTATE_MORE_BULLETS 2
WEAPONSTATE_RELOADING 3
Kiti atnaujinimai:Sutvarkyta klaidingai veikusi fseek() funkcija.
Tai tiek informacijos su šiuo atnaujinimu.
Blantas