Jump to content

Xchos

Uživatel
  • Příspěvků

    10
  • Registrován

  • Aktivní

Příspěvky posted by Xchos

  1. Statistics v1.0.1

    Úvod:
    Napsal jsem jednoduchou knihovnu pro zavedení statistik do hry. Je to psané pro širokou škálu lidí, takže jsem v tvorbě koukal na univerzálnost. Pro využití je zapotřebí pouze jednoho SQLite souboru ve složce scriptfiles, který si include sám vytvoří, jakmile bude použit. Hráči je přiřazováno unikátní ID, které slouží pro zavedení statistik. Toto ID je generováno na herní přezdívku. Nebudu protahovat a tady uvedu jednoduché příklady implementace:

    Implementace:
    nahoru do .pwn


    #include <stats>

    do OnGameModeInit() případně OnFilterScriptInit() uvedeme následující:

    	statsInit("stats.sqlite");
    
    	statsBeginTransaction();        // Začne transakci - vykoná všechny query najednou. V tomto případě registraci všech názvů statistik.
    
    	SetStatName(1, "Připojení");
    	SetStatName(2, "Nastoupení do vozu");
    	SetStatName(3, "nejvyšší rychlost");
    	
    	statsCommit(); // Ukončení transakce a potvrzení.
    

    Jedná se o inicializaci, takže by se měla dodržet konvence o "very first", tedy jako první pokud možno.

    Poté je potřeba ošetřit zavření databáze. To učiníme v OnGameModeExit() případně OnFilterScriptExit() ..

    statsExit();
    

    Pak už se dá jen jednoduše pracovat. Include využívá hojně PlayerVariables a to s prefixem stats_. Do těchto proměnných si ukládá Cache. Cache slouží k tomu, aby se redukovali co nejvíce režijní náklady na databázi.

    Soubor funkcí:
    Funkce, které include obsahuje:

    	native queryLog(bool:state); // slouží k printu dotazů na databázi do server_log.log
    	native statsInit(name[]); // inicializace statistik
    	native statsExit(); // odhlášení od statistik
    	
    	native GetStatName(statid); // returns string[]
    	native SetStatName(statid, name[]); // returns true/false
    
    	native IsPlayerUniqueStatsIDAssigned(playerid); // returns true/false
    	native AssignPlayerUniqueStatsID(playerid); // returns (int)uniqueID
    	native GetPlayerUniqueStatsID(playerid); // returns (int)uniqueID
    	
    	native SetPlayerIntegerStat(playerid, statid, value); //returns true/false
    	native GetPlayerIntegerStat(playerid, statid); //returns (int)value
    	native SetPlayerFloatStat(playerid, statid, Float:value); //returns true/false
    	native Float:GetPlayerFloatStat(playerid, statid); //returns (float)value

    Využití:
    Ukázka z práce tímto includem může být následující:


    public OnPlayerConnect(playerid){
    	AssignPlayerUniqueStatsID(playerid);  // Zajistíme unikátní ID pro statistiky hráči.
    	new connections = GetPlayerIntegerStat(playerid, 1); // Zjistíme hodnotu statistiky.
    	SetPlayerIntegerStat(playerid, 1, connections+1); // Nastavíme novou hodnotu
    }
    
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    	new enters = GetPlayerIntegerStat(playerid, 2); // Zjistíme hodnotu statistiky.
    	SetPlayerIntegerStat(playerid, 2, enters+1); // Nastavíme novou hodnotu
    	return 1;
    }
    
    public OnPlayerUpdate(playerid)
    {
    	if(IsPlayerInAnyVehicle(playerid))
    	{
    		new vehicleid = GetPlayerVehicleID(playerid);
    		new Float:currentspeed = GetVehicleSpeed(vehicleid);
    		new Float:maxspeed = GetPlayerFloatStat(playerid, 3);
    		if(currentspeed>maxspeed)  SetPlayerFloatStat(playerid, 3, currentspeed);
    	}
    }
    

    https://github.com/Xchos/samp

     

    V případě chyb mne prosím kontaktujte pomocí emailu uvedeném v souboru stats.inc a já se je pokusím odstranit. Případné dotazy můžete také pokládat přímo do emailu.

     

    Poprosím všechny, co se tuto knihovnu rozhodnou využít aby mě zanechali jako autora tohoto scriptu. Děkuji!

  2. zdravim ... tenhle problem sem mel taky ( nemam orig ) ... vyresil sem ho tak ze jsem hru preinstaloval a nedal sem crack jako fixed exe + core.dll ale stahl sem si Fixed Image kterej ma asi 18mb ... staci dat do virtualni mechaniky a uz vse slo jak ma

  3. tohle si myslim ze dohromady nezkloubis ... leda ze by sis udelal vlastni prikaz na ban, kterej by ti do souboru ulozil nick a k nemu IP ... tim by se dalo udelat ze by ti to vyhledalo nick a k nemu IP ... pak by to odeslalo prikaz na unban IP adresy :)

     

     

    je mozny ze bude jednodussi verze ale tu asi teď nevymyslim :d

  4. vic ti jich to rozhodne nezobrazi, ale je tu moznost, ze si ulozis nekam informace o objektu a budes hlidat, ze kdyz bude hrac na nejakem miste kde maji byt objekty tak aby se tam vytvorili ... pokud odjede tak se odstrani ... timhle by sis mohl zajistit, ze pokud to mas treba 100 objektu v LV a nikdo tam neni sou treba v SF tak ti to tech 100 objektu povoli postavit jinde ... :boss: nevihoda tohohle je ze pokud bude kazdej hrac na nejakem miste, kde bude 200 objektu a nekdo pride nekam kde jich je 100 a je to jine misto, tak se mu jich zobrazi jen 50 dokud ten predchozi neodejde ...

  5. no tak jestli sem magor to nevim :d ... rekl sem si ze udelam nejakej tachometr na instantni zjisteni rychlosti aby sme mohli udelat omezovac rychlosti napr do vesnice na 50kmph atd ... docela se mi to povedlo ... ta odchylka je zapricinena nejspis treti osou kterou jsem nezapocitaval z duvodu aby nebyl slozitejsi vzorec na prenastaveni rychlosti hraci kteremu budeme omezovat rychlost :d ... jestli mate nekdo k tomuhle nejake dotazy ptejte se tady nebo mi pisnete... speedhack by se tim dal zatrhnout podle me na 98.5% ... to 1.5% vylucuju z toho duvodu ze si nekdo upravi speedhack tak aby mu dal max rychlost auta :d

×
×
  • Create New...