Jump to content

ĐaVe

Uživatel
  • Příspěvků

    806
  • Registrován

  • Aktivní

  • Vítězných dnů

    4

Příspěvky posted by ĐaVe

  1. No ale u mňa to tak nejde, pride jeden a zapne raka

    pak leda si muzes v mym scriptu zmenit

    if(pocet == 4)
    

    na

    if(pocet == 1)
    

    a pred kick asi 3s pred kickem (pres timer) dat zpravu "pokud je kick neopravneny, kontaktujte mne na skype at vam povolim ip adresu" :d ale na to se asi kazdej vykasle, misto toho aby te kontaktoval rekne si "pujdu na jinej server"

    to by bylo lepsi udelat jak pise

    HighPrint
  2. dálší, co by bylo na tahu by bylo asi, že

    new test[16];
    

    by mělo být nad

    for(new i=0; i<MAX_PLAYERS;i++)
    

    aby se zbytečně netvořilo 100x :d dal jsem to pod to, abych si byl jistej, že to pojede, vzpoměl jsem si na pár komplikací v TT, ale nejsem si jistý, zda to bylo přímo v tomhle :-)


    Wtf tak čo je to zle ?

     

    ne, neni neboj, je to dobre :) zkratka komplikovanejc, chtel jsem se trosku lisit od jejich scriptu :d neco originalniho do nej :d

  3.  

     

    DaVe mohl bych ti sem toho napsat víc, ale nebudu až tolik rejpat. 

    Toto opravdu myslíš vážně?

    stock SendPrint(text[],cislo,text2[])
    {
        new s[100];
        if(cislo == -1) {    format(s,100,"%s%s",text,text2); }
        else{ format(s,100,"%s%d%s",text,cislo,text2); }
        print(s);
    }

    To co tam děláš dělá printf(..) a dělá to lépe.. :d

     

     

    ja věděl že to někdo zmíní :d

  4. tak já se taky pridám :d

    #include <a_samp>
    
    public OnPlayerConnect(playerid)
    {
    	new ip[16],pocet; GetPlayerIp(playerid, ip, sizeof(ip));
    	SendPrint("Připojen nový hráč z ip: ",-1,ip);
    	for(new i=0; i<MAX_PLAYERS; i++)
    	{
    	    if(IsPlayerConnected(i))
    	    {
    		new test[16];
    	        GetPlayerIp(i, test, sizeof(test));
    	        if(!strcmp(ip,test,true))
    		{
    	            pocet++;
    	            SendPrint("Nalezeno shod této ip: ",pocet,".");
    	            if(pocet == 4)
    		    {
    		        SendPrint("Kickuji hráče id: ",playerid,".");
    	                Kick(playerid);
    	            }
    	        }
    	    }
    	}
    	return 1;
    }
    
    stock SendPrint(text[],cislo,text2[])
    {
    	new s[100];
    	if(cislo == -1) {	format(s,100,"%s%s",text,text2); }
    	else{   format(s,100,"%s%d%s",text,cislo,text2); }
    	print(s);
    }
    
    • Líbí se mi to! (+1) 1
  5. Boti vyvolané RakSAMPem nejsou NPC, nýbrž "hráči", kteří jsou schopni posílat i přijímat pakety. Takže ta tvoje zkušenost je pěkně lživá. Navíc když kickneš někoho se stejnou IP, tak tomu druhýmu se nic nestane – jen ban.

     

    @Mikoo, to se nedá tak říci, protože bot může být jeden nebo 50. To samé může nastat situace s hráči (bratr s bratrem hrajou ve stejnou chvíli). 

    jasnee vsechny moje zkusenousti jsou velka lez i kdybych ti to predvedl na zivo, myslis si ze teorie tvoje je vetsi nez praxe.... vis co ja vam na to forko seru uplne, nejlepsi lidi co tu byli uz tu stejne nejsou, QWERa jste zabanovali i kdyz tu byl jeden z nejlepsich a nejaktivnejsich a vis co... me je to jedno

  6. Přesně jak píše Steam Wallet, asi jedině limitovat počet připojení pod jednou IPinou. Každopádně to co napsal Dave je totální bullshit a tím se rozhodně neřiď.

    jasne jako vsechno i jako me zkusenosti :d sice s RAK zkusenosti nemam, ale kamos v TT kdyz jsem tam tuto podminku mel dycky pripojoval 50 botu e srandy a tato podminka mu je vzdy kickla dokud jsem ji nevymazal

    a tema botama nemyslim npc ale pres program boty ktere delaly presne ty pohyby a akce co delal on se svym hracem

  7.  

     

    Eh...? Už jsem nechtěl do toho rejpat ale 

     

     

    "a nemusis vse definovat jak vocas, naopak to nadefinujes v jednom radku... nemusis se tim vice zdrzovat a zabyvat, vede to i k rychlejsimu pawneni" - TOHLE by nikdy PROGRAMÁTOR neřekl, nemusíš se ZDRŽOVAT? RYCHLEJI?... promiň,... kdyby to bylo všechno sjednocené, tak OnPConnect a OnPDisconnect je v jednom... nebo počkej, proč to rovnou všechno nenacpat do OnGameModeInit? To je taky sjednocení... přece se nemusíš ničím zdržovat a vede to k rychlejšímu pawnění. A taky méně řádků (a tím pokračujeme na druhý bod níže)

     

    A co jako má znamena tohle? "mene radku budes mit v modu" - Od kdy je lepší méně řádků? Být to na mě, tak ten tvůj celej systém dokážů napsat o 3x méně řádků a s lepší funkčností, pokud se hraje na tohle - na řádky. Už jenom DestroyMenu jsi mohl dát na lepší místo a tím by ses zbavil 4 zbytečných řádků... 

     

     

    ale me je to uplne jedno chapes? nepochopil jsi vyznam toho prispevku... jinak ja vim ze to jde pod sebe, muj vkus je jednoduchost v jednom radku, nemusim pak vse vypisovast... jako napr kdyz tvoris menu CreateMenu AddMenuItem... ja nevim jak tebe ale me treba nebavi kvuli tomu abych do menu pridal funkci psat porad znovu AddMenuItem(MojeMenu,...   , muj vkus je jednoduchost v jednom radku


    a jinak jak jsem psal, jak se mi bude chtit, klidne vam to prekopu, neni to pro me a predem vas zadam, nespamujte kraviny

  8. neděláš to pro mě. ale děláš to pro sebe aby se ti zlepšila reputace...

     

    :d sorry ale reputace i cely tenhle server je mi vis kde ;) delam to pro vas ne pro me, ja uz se samp skoncil

    vis kdyby to melo byt na me tak me by se treba s tim delalo lip jak to je, mene radku budes mit v modu, ano sice budes tam neco v danem radku hledat pri upravach, ale budes to mit vse u sebe sjednoceny ;)

    a nemusis vse definovat jak vocas, naopak to nadefinujes v jednom radku a nemusis se tim vice zdrzovat a zabyvat, vede to i k rychlejsimu pawneni aspon dle meho nazoru

  9. vite co? me je to jedno, jak jsem jiz psal... klidne to cely vymazte a nebo se hodlejte uklidnit, o vsech zninovanych chybach vim dokonce i o tom menu co jsem tu sam nezminil, nejsem blbej, pawno cist jeste umim


    bud to cely smazte (je mi to fuk) a nebo budte trpelivi az budu mit chut a cas na to, uz nejsem takovej blazen jako driv ze bych pawnil porad, ne


    Protože je DaVe věřící, který nekleje, smazal všechny svoje nadávky.

     

    Vážně si myslíš že kvůli tomu jsem to smazal?

    Důvod proč: -jsem takový, že občas vybuchnu, něco napíšu a pak si to třeba čtu, jakmile se uklidním alespoň trochu, vidím to jinak a vidím, že jsem třeba vybuchl zbytečně a že jsem ti zbytečně nadával... Ten příspěvek jsem upravoval dříve, než jsi odeslal tvůj.

     

     

    K includu: opravil jsem doufám vše, snad jsem na nic nezapoměl, linky upraveny, include připraven k použití, kdyby cokoliv ohledně scriptu, pište sem

  10. jede specialne pro tebe jsem tu nahral fotky

     

    FOTKY V AKCI ZDE

     

    co ti nejede?


    jediny co se divam, nejak nelogicky jsem udelal JobNahranoMinut , jasne pri zadani 0 je vse v pohode ale prakticky nemas sanci treba na id jobu 1 2 3 4 atd ziskat praxi kdyz to reknu lajcky :d to je asi jediny bug pak ta uniforma tam bych dal podminku ze si ji muzes dat jen pokud jsi tam zamestnan, tyto dva bugy mohu opravit behem chvilinky kdyz budu chtit


    vymazu ti pak z tama rovnou ty 2 cykly :)

  11. ráno jsem to testoval, opravil asi 5 chyb v pawnu, ktere měly vliv na funkci includu, include opraven, linky updatovány, include funkční...

     

     

    Jak pracovat s DJS.inc? Zde je příklad(soubor, na kterém jsem inc testoval, vznikl pro tento test):

     

     

    /*
    ============================================================================
    						DaVe Roleplay Gamemode v1.0
    	 				 zahájeno: 28.12.2015  v: 1:12 ráno
    ============================================================================
    
    DJS:
    ====
    Funkce pro pridani penez hraci: GivePlayerJobCashForGet(playerid,cash)
    
    Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení:
        JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS
    								  		  po odpojení hráče a po připojení
        JobID[playerid]
        Vyplata[playerid][MAX_JOBS]	//je třeba uložit a načíst všechny MAX_JOBS
    								  po odpojení hráče a po připojení
    
    Nezapomente definovat MAX_JOBS na svůj využitý počet
    	#define MAX_JOBS    50 //přímo v includu
    
    Pro kontrolu hráčového jobu využijte:
    	if(JobID[playerid] == Job_ID)
    
    AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminut,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon)
    
    
    DHS:
    ====
    3) vyuzijeme funkci(tuto funkci zadavame do public GameModeInit() ve vasem modu):
    	CreateDaveHouse(mapicon,pickupid,cena,Float:X,Float:Y,Float:Z,interiorid,Float:InteriorX,Float:InteriorY,Float:InteriorZ,HomeVirtualWorld)
    
    	mapicon = ikona na mape
    	pickupid = id pickupu domu
    	cena = vase nastaveni ceny napr 100000 (piste bez mezer a bez uvozovek)
    	Float:X,Float:Y,Float:Z = pozice pickupu domu
    	interiorid = id interioru domu
    	Float:InteriorX,Float:InteriorY,Float:InteriorZ = pozice interioru, pripadne pozice, kam hrac bude presunut
    	HomeVirtualWorld = vami zvolene id VirtualWorld
    
    4) upravime definici MAX_HOUSES na vami vyuzity pocet domu v includu:
    	#define MAX_HOUSES  [vas pocet domu]
    	priklad:
    	#define MAX_HOUSES  45
    
    */
    
    #include <a_samp>
    #include <DJS>
    #include <DHS>
    
    #define dcmd(%1,%2,%3) if((strcmp((%3)[1],#%1,true,(%2))==0)&&((((%3)[(%2)+1]==0)&&(dcmd_%1(playerid,"")))||(((%3)[(%2)+1]==32)&&(dcmd_%1(playerid,(%3)[(%2)+2]))))) return 1
    #define B_ORANZOVA	    	0xFF7B00AA
    #define B_CERVENA   		0xE10000AA
    #define B_SVITIVA			0xB5FF4AAA
    #define B_BILA				0xFFFFFFAA
    #define B_MODR              0x4169FFAA
    #define B_ZLUT              0xFFFF00AA
    #define B_SEDA 	            0x808080AA
    
    
    
    main()
    {
    	print("====================================");
    	print(" 	DaVe RolePlay Gamemode");
    	print("započato: 28.12.2015  v: 1:12 ráno");
    	print("====================================");
    }
    
    public OnGameModeInit()
    {
        DJS_OnGameModeInit();   DHS_OnGameModeInit();
    	SetGameModeText("DaVe RP 2015");
    	for(new i=0; i<299;i++)	{	AddPlayerClass(i, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);   }
    
        AddJob("Policista",2029.7307,1349.2823,10.8203,B_ORANZOVA,5,299,241,264,23,32,31,B_ORANZOVA,34);
        AddJob("Urednik",2040.5896,1344.0265,10.6719,B_MODR,5,299,241,264,0,0,0,B_MODR,34);
        AddJob("Popelar",2049.5200,1336.1340,10.6719,B_SEDA,5,299,241,264,23,14,0,B_SEDA,34);
    	return 1;
    }
    
    public OnGameModeExit()
    {
        DHS_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)
    {
        DJS_OnPlayerConnect(playerid);  DHS_OnPlayerConnect(playerid);
    	return 1;
    }
    
    public OnPlayerDisconnect(playerid, reason)
    {
    	return 1;
    }
    
    public OnPlayerSpawn(playerid)
    {
        DHS_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[])
    {
    	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)
    {
        DJS_OnPlayerPickupPickup(playerid,pickupid);    DHS_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)
    {
        DJS_OnPlayerSelectedMenuRow(playerid, row); DHS_OnPlayerSelectedMenuRow(playerid, row);
    	return 1;
    }
    
    public OnPlayerExitedMenu(playerid)
    {
    	return 1;
    }
    
    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    	return 1;
    }
    
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
        DHS_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;
    }
    

     

     


    (v udaném příkladu je zahrnut i DHS)

  12. Další pěkná věc, aneb jak zahltit streamer zbytečnýma mapiconama..

    (Vytvářej je pokud není includovaný streamer. Pokud je, tak je vytvářej v Initu ^^. Takhle se vytváří pro všechny hráče s každým připojením)

     

    nevim jak presne to funguje ve streameru, ale dle mych zkusenosti jsem to vzdy daval do onplayerconnectu a nebyl s tim problem, jestli streamer funguje jinak nez SetPlayerMapIcon, to jsem nezkoumal

    stock DJS_OnPlayerPickupPickup(playerid,pickupid)

    {

        #pragma unused pickupid

     

    hej :d no je to zvyk :d napisu cely public, upravim do sveho, jasny jednodussi pickupid vymazat :)

     

    ~> Ale no ták... už je rok 2k15: (wiki/GetPlayerPoolSize).

     

    nesleduju novinky pawna :) delam ete ve starsim pawnu a ani jsem neaktualizoval ted pawno aby tam tahle funkce sla :)

    • Líbí se mi to! (+1) 1
  13.  

     

    Celé je to na nic...

     

    stock GivePlayerJobCashForGet jde napsat mnohem líp bez zbytečného cyklu

    if(JobID[playerid] >= 0) Vyplata[playerid][JobId[playerid]] += cash;

    Wau a mam to bez cyklu..

     

    -

    To stejné AddMin()

    JobNahranoMinut[i][JobId[i]]++;

    -

    A další hlod..

    switch(random(3))
    {
         case 0: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin1]);
         case 1: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin2]);
         case 2: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin3]);
    }
    
    Protože něco jako
    SetPlayerSkin(playerid,Job[IsMenu[playerid]][random(3)]);
    je moc mainstream
    

    -

    A toto je zase co :d

    stock DJS_OnPlayerPickupPickup(playerid,pickupid)
    {
        #pragma unused pickupid
        for(new DJS=0; DJS<VytvorenoJobu; DJS++)
        {
            if(IsPlayerInRangeOfPoint(playerid,2,Job[DJS][Job_X],Job[DJS][Job_Y],Job[DJS][Job_Z])) <---------------------------
            {
                JobMenu = CreateMenu(Job[DJS][jobname],1, 50.0, 180.0, 400.0, 200.0);
                AddMenuItem(JobMenu,0,"Uchazet se o pozici");
                AddMenuItem(JobMenu,0,"Uniforma");
                AddMenuItem(JobMenu,0,"Vyplata");
                AddMenuItem(JobMenu,0,"Nic");
    
                ShowMenuForPlayer(JobMenu,playerid);
                IsMenu[playerid] = DJS;
            }
        }
    }

    Proč sakra porovnáváš na jaké je pozici, když stačí porovnat pickupid s uloženýma pickupid k jednotlivým jobům. Plus ti to nebude fungovat, když si stoupne na pickup víc lidí, protože pořád přepisuješ ID toho menu (?)

     

    -

    Další pěkná věc, aneb jak zahltit streamer zbytečnýma mapiconama..

    for(new i=0;i<MAX_JOBS;i++)
    {
         #if defined Streamer_IncludeFileVersion
        CreateDynamicMapIcon(Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],-1,-1,-1,-1,100);
         #else
        SetPlayerMapIcon(playerid,i,Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],i,MAPICON_GLOBAL);
         #endif
    }

    (Vytvářej je pokud není includovaný streamer. Pokud je, tak je vytvářej v Initu ^^. Takhle se vytváří pro všechny hráče s každým připojením)

    -

    -

    A je strašně pěkně vymyšlené to vkládání volání fcí do OnGameModeInit, OnPlayerConnect atd.. vůbec by nebylo pro obě strany lepší použít hookovaní.

    Jako vždy jsi nepřekvapil a je to sra.. Ámen

     

     

     

    jojo, sorry, po rocnim nepawneni co jsem pawno otevrel jsem delal moc kopancu :) co uz, oprvovat se mi to nechce, proste je to jak je a at si s tim dela kazdy co chce :)


    *opravovat


    Proč sakra porovnáváš na jaké je pozici, když stačí porovnat pickupid s uloženýma pickupid k jednotlivým jobům.

     

    duvod je jednoduchy, protoze od zkusenosti s pawnem vim, ze se if(pickupid==pickup) pri vice pouziti prohazuje a snazim se vyhnout bugum, kdyz uzivatel bude vyuzivat tuto defektni funkci ( myslim if(pickupid == pickup) ), a nestojim o opravne includy jako napr od ATomase, snazil jsem se to delat bez blbych dalsich includu

    • Líbí se mi to! (+1) 1
  14. Přátelé, plánoval jsem se vrátit k pawnu, ale prdím na to :d chtěl jsem udělat mód RP, začal jsem tímhle scriptem, jelikož jsem se na mód vykašlal a dělat jej nebudu, tak vám odevzdávám svůj include...

     

    takže...

     

    Job system include = include pro tvorbu zamestnani v sampu

     

    Pro vyuziti je treba pridat do publicu:

    	public OnGameModeInit() {   DJS_OnGameModeInit();   }
    	public OnPlayerPickupPickup(playerid,pickupid)  {   DJS_OnPlayerPickupPickup(playerid,pickupid); }
    	public OnPlayerSelectedMenuRow(playerid, row)   {   DJS_OnPlayerSelectedMenuRow(playerid, row); }
    	public OnPlayerConnect(playerid)	{   DJS_OnPlayerConnect(playerid)   }
    
    

    Funkce pro pridani penez hraci:

        GivePlayerJobCashForGet(playerid,cash)

    Funkce,která  odebere hráči job:

        DeletePlayerJob(playerid);

    Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení:

        JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS
                                                po odpojení hráče a po připojení
        JobID[playerid]
        Vyplata[playerid][MAX_JOBS]    //je třeba uložit a načíst všechny MAX_JOBS
                                      po odpojení hráče a po připojení

    Nezapomente definovat MAX_JOBS na svůj využitý počet:

        #define MAX_JOBS    50 //přímo v includu

    Pro kontrolu hráčového jobu využijte:

        if(PlayerJob(playerid,==,14) )

    A samozřejmě nezapomeňte nahoru do módu:

        #include <DJS>

    Vzhledem k tomu, ze planovany projekt nebyl zhotoven, tak vam tento include
    davam, s pozdravem DaVe

     

    //EDIT: include otestován, opravené chyby scriptu, znovu nahráno a upravené linky pastebin a download

     

     

     

    /*
    ||=========================================================================||
    ||                                                                         ||
    ||                         **    DaVe Job System Include **                     ||
    ||  Tento include je určen pro módy RP, já jsem jej vytvořil pro svůj      ||
    ||  nový plánovaný projekt, který hodlám zkusit udělat, jelikož Sa:Mp      ||
    ||  již není co bývalo, hrozně moc upadlo i já i moji nejlepší přátelé     ||
    ||  ze samp tuto hru již opustili, po prodeji svého auta šetřím na jiné    ||
    ||  tak mám čas po práci vždy něco připawnit, pokud z tohoto projektu,     ||
    ||  který plánuji nic nebude, teno include hodlám zveřejnit pro pawno.cz . ||
    ||                                                                         ||
    ||=========================================================================||
    
    Pro vyuziti je treba pridat do publicu:
        public OnGameModeInit() {   DJS_OnGameModeInit();   }
        public OnPlayerPickupPickup(playerid,pickupid)  {   DJS_OnPlayerPickupPickup(playerid,pickupid); }
        public OnPlayerSelectedMenuRow(playerid, row)   {   DJS_OnPlayerSelectedMenuRow(playerid, row); }
        public OnPlayerConnect(playerid)    {   DJS_OnPlayerConnect(playerid);   }
    
    Funkce pro pridani penez hraci: GivePlayerJobCashForGet(playerid,cash)
    
    Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení:
        JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS
                                                po odpojení hráče a po připojení
        JobID[playerid]
        Vyplata[playerid][MAX_JOBS]    //je třeba uložit a načíst všechny MAX_JOBS
                                      po odpojení hráče a po připojení
    
    Nezapomente definovat MAX_JOBS na svůj využitý počet
        #define MAX_JOBS    50 //přímo v includu
    
    Pro kontrolu hráčového jobu využijte (14 znamená id jobu):
        if(PlayerJob(playerid,==,14) )
        
    Nezapomeňte nahoru do módu:
        #include <DJS>
    
    Důležité:
        Job vytvoříte pomocí:
            AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminutnapodobnepozici,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon)
        Nezapomeňte, funguje to na jednoduchém principu, zkrátka čím výš bude
        AddJob(...), tím menší je ID tohoto jobu:
            AddJob("Policista",2029.7307,1349.2823,10.8203,B_ORANZOVA,5,299,241,264,23,32,31,B_ORANZOVA,34); //toto zaměstnání bude mít id 0, protože je nahoře
            AddJob("Urednik",2040.5896,1344.0265,10.6719,B_MODR,5,299,241,264,0,0,0,B_MODR,34); //toto zaměstnání bude mít id 1, protože je uprostřed
            AddJob("Popelar",2049.5200,1336.1340,10.6719,B_SEDA,5,299,241,264,23,14,0,B_SEDA,34); //toto zaměstnání bude mít id 2, protože je dole
        Pokud využijete funkci "Jobzadaminutnapodobnepozici"(čiže pokud tam dáte
        větší číslo než 0), musíte na definovaných podobných pozicích do svého
        módu přidat public, který bude přičítat minuty z podobného jobu do toho,
        který požaduje vámi definovaný počet minut na podobném:
            if(PlayerJob(playerid,==,2) )
            {
                JobNahranoMinut[playerid][4]++; //4 je id podobného jobu
            }
    
    Funkce DeletePlayerJob(playerid) odebere hráči job, tuto funkci můžete použít
    například když hráče někdo zatkne:
        DeletePlayerJob(playerid);
    
    Vzhledem k tomu, ze planovany projekt nebyl zhotoven, tak vam tento include
    davam, s pozdravem DaVe
    */
    
    #include <a_samp>
    
    #define MAX_JOBS                        50
    
    enum JOB_INFO {
        Float: Job_X,
        Float: Job_Y,
        Float: Job_Z,
        jobname[70],
        jobpickup,
        jobid,
        jobzadaminut,
        jobskin1,
        jobskin2,
        jobskin3,
        wep1,
        wep2,
        wep3,
        color,
        jobmapicon
    };
    
    new Job[MAX_JOBS][JOB_INFO], JobID[MAX_PLAYERS], JobNahranoMinut[MAX_PLAYERS][MAX_JOBS], VytvorenoJobu;
    new Menu: JobMenu[MAX_PLAYERS], IsMenu[MAX_PLAYERS], Vyplata[MAX_PLAYERS][MAX_JOBS];
    
    #define PlayerJob(%1,%2,%3)         JobID[%1]%2%3
    #define DeletePlayerJob(%1)         JobID[%1]=-1
    
    forward AddMin();
    
    stock DJS_OnGameModeInit()
    {
        SetTimer("AddMin",60000,true);
    }
    
    stock AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminutnapodobnepozici,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon)
    {
        if(mapicon > 63 || mapicon < 0 || VytvorenoJobu == MAX_JOBS || Jobzadaminutnapodobnepozici < 0)
        {
            if(VytvorenoJobu == MAX_JOBS) {    printf("[   DJS ERROR   ]: Prekroceny pocet MAX_JOBS");   }
            if(mapicon > 63 || mapicon < 0)    {   printf("[   DJS ERROR   ]: Chybne ID mapicon"); }
            if(Jobzadaminutnapodobnepozici < 0) {   printf("[   DJS ERROR   ]: Chybna definice funkce Jobzadaminutnapodobnepozici"); }
        }else{
            Job[VytvorenoJobu][Job_X] = X;
            Job[VytvorenoJobu][Job_Y] = Y;
            Job[VytvorenoJobu][Job_Z] = Z;
            format(Job[VytvorenoJobu][jobname],70,job_name);
            Job[VytvorenoJobu][jobzadaminut] = Jobzadaminutnapodobnepozici;
            Job[VytvorenoJobu][jobid] = VytvorenoJobu;
            Job[VytvorenoJobu][jobskin1] = skin1; Job[VytvorenoJobu][jobskin2] = skin2; Job[VytvorenoJobu][jobskin3] = skin3;
            Job[VytvorenoJobu][wep1] = weapon1; Job[VytvorenoJobu][wep2] = weapon2; Job[VytvorenoJobu][wep3] = weapon3;
            Create3DTextLabel(Job[VytvorenoJobu][jobname],barvatextu,X,Y,Z,100,0);
            Job[VytvorenoJobu][jobpickup] = CreatePickup(1272,1,X,Y,Z);
            Job[VytvorenoJobu][jobmapicon] = mapicon;
            Job[VytvorenoJobu][color] = jobcolor;
               VytvorenoJobu++;
           }
    }
    
    stock DJS_OnPlayerPickupPickup(playerid,pickupid)
    {
        #pragma unused pickupid
        for(new DJS=0; DJS<VytvorenoJobu; DJS++)
        {
            if(IsPlayerInRangeOfPoint(playerid,2,Job[DJS][Job_X],Job[DJS][Job_Y],Job[DJS][Job_Z]))
            {
                JobMenu[playerid] = CreateMenu(Job[DJS][jobname],1, 50.0, 180.0, 400.0, 200.0);
                AddMenuItem(JobMenu[playerid],0,"Uchazet se o pozici");
                AddMenuItem(JobMenu[playerid],0,"Uniforma");
                AddMenuItem(JobMenu[playerid],0,"Vyplata");
                AddMenuItem(JobMenu[playerid],0,"Nic");
                
                ShowMenuForPlayer(JobMenu[playerid],playerid);
                IsMenu[playerid] = DJS;
            }
        }
    }
    
    stock DJS_OnPlayerSelectedMenuRow(playerid, row)
    {
        if(GetPlayerMenu(playerid) == JobMenu[playerid])
        {
            switch(row)
            {
                case 0: {
                            DestroyMenu(JobMenu[playerid]);
                            if(JobNahranoMinut[playerid][IsMenu[playerid]] < Job[IsMenu[playerid]][jobzadaminut]){
                                SendClientMessage(playerid,-1,"Nemáš dostatečnou praxi na podobné pozici"); return 1;}
                            if(JobID[playerid] == Job[IsMenu[playerid]][jobid]){
                                SendClientMessage(playerid,-1,"Již u nás pracuješ, kolego"); return 1;}
                            JobID[playerid] = Job[IsMenu[playerid]][jobid];
                            SendClientMessage(playerid,-1,"Vítej v nové práci kolego, snaž se plnit svoji práci");
                            GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep1],5);
                            GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep2],5);
                            GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep3],5);
                            SetPlayerColor(playerid,Job[IsMenu[playerid]][color]);
                         }
                case 1: {
                            DestroyMenu(JobMenu[playerid]);
                            if(JobID[playerid] != Job[IsMenu[playerid]][jobid]){
                                return SendClientMessage(playerid,-1,"Uniformy dáváme jen zaměstnancům");    }
                            switch(random(3))
                            {
                                case 0: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin1]);
                                case 1: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin2]);
                                case 2: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin3]);
                            }
                        }
                case 2: {
                            DestroyMenu(JobMenu[playerid]);
                            if(Vyplata[playerid][IsMenu[playerid]] == 0) return SendClientMessage(playerid,-1,"Nemáte u nás peníze");
                            GivePlayerMoney(playerid,Vyplata[playerid][IsMenu[playerid]]);
                            Vyplata[playerid][IsMenu[playerid]] = 0;
                        }
            }
        }
        return 1;
    }
    
    public AddMin()
    {
        for(new i=0; i<MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i) && JobID[i] != -1)
            {
                JobNahranoMinut[i][JobID[i]]++;
            }
        }
    }
    
    stock GivePlayerJobCashForGet(playerid,cash)
    {
        if(IsPlayerConnected(playerid) && JobID[playerid] != -1)
         {
              Vyplata[playerid][JobID[playerid]]+=cash;
          }
    }
    
    stock DJS_OnPlayerConnect(playerid)
    {
        for(new i=0;i<MAX_JOBS;i++)
        {
            #if defined Streamer_IncludeFileVersion
            CreateDynamicMapIcon(Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],-1,-1,-1,-1,100);
            #else
            SetPlayerMapIcon(playerid,i,Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],i,MAPICON_GLOBAL);
            #endif
            JobNahranoMinut[playerid][i] = 0;
        }
        JobID[playerid] = -1;
    }
    

     

     

     

    DOWNLOAD

    PASTEBIN

  15. No když jsem tam byl..Byl jsem zklamanej. rikal jsem si že to snad není ani mozny ze si to dělal ty.

    tak to me laka server zaheslovat pokud to spini moji povest v nehotovem stavu :d

     

     

    Ted kdyz vidím že nemáš čas atd tak to chápu, a věřím že to někam dotáhneš :) Každopádně Pokud by si chtěl mohu ti i nějak pomoct. Aby si věděl kdo jsem tak jen napíšu - DEXTER- CarDM

     

    BTW: na kontrolu rakety nepotřebuješ timer ale stačí streamer :)

    diky za nabidku kamo :) kdyz budu potrebovat, obratim se na tebe :)

    zitra kdyz bude cas, opravim tu buglou raketu :)

  16. jojo, jsou tam bugy :-) hodne bugu zatim :) delal jsem vse do jednoho timeru do MultiTimer() aby nebyl server vytezovan, nechtel jsem opakovat vytizeni serveru jako s modem TT, kde jsem mel timeru dost a pak ubiral abych snizil vytizeni cpu, proto tam nemam specialni timer na raketu zatim :-) mod tehdy byl spusten a zaheslovam na serveru, nebyl tehdy urcen k okamzitemu hrani, chtel jsem ho dodelat pred oficialnim spustenim, tehdy jsem s tim sekl :) ted ale nemam auto takze po praci byvam doma (kdyz to jde, boucham prescasy, takze zase extra moc casu na to taky neni), jinak hodlam si s tim vyhrat a mam hodne dobrych napadu :) nyni dodelavam mapu, kterou jsem tehdy sveril CJ2o15, meli jsme ji delat na pul ja udelal zaklad, cj mel udelat ostatni, nemel taky moc casu :) kdyz se zadari budete cubrnet, ale nebude to hned kazdodenni pawneni jako drive :)

  17. ja nemel v planu se vracet k pawnu :) ted co se mi rozsypala spojka na tempre, prodal jsem ji a byvam ted doma po praci... premyslel jsem nad tvorbou RP modu , udelal jsem na nej i include job systemu, ale nechce se mi s tim zase drbat buh vi jak dlouho, napadlo me kdybych dodelal revolt dle svych napadu, ktere jsem mel kdysi, uvidime jak to pujde :)

×
×
  • Create New...