Jump to content

script [inc] DaVe Job System


ĐaVe

Recommended Posts

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

Edited by ĐaVe
Link to comment
Share on other sites

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

Edited by Lukasz
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

 

 

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
Link to comment
Share on other sites

 

stock DJS_OnPlayerPickupPickup(playerid,pickupid)
{
	#pragma unused pickupid

 

~> Tohle mě překvapí pokaždé. Při deklaraci nové funkce do ní přidáváš preprocesor s nevyužitím jednoho z tvých vlastních parametrů. Proč? Když ho tam nepotřebuješ, nechceš nebo cokoliv jiného, tak ho tam nedávej.

 

 

 

public AddMin()
{
	for(new i=0; i<MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i) && JobID[i] != -1)
	    {

 

~> Ale no ták... už je rok 2k15: (wiki/GetPlayerPoolSize).
Link to comment
Share on other sites

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
Link to comment
Share on other sites

Pickupy se "prohazují" při špatném zacházení s hodnotou proměnné. Pokud ničíš pickupy (DestroyPickup) a "neresetuješ" hodnotu proměnné, kde máš uložené id pickupu, tak se pak nemůžeš divit no.. Jinak porovnávání pickupid funguje tak jak má.

 

S těma ikonama jde o to, že při každém připojení hráče vytvoříš MAX_JOBS ikon pro všechny hráče (pokud máš streamer). Stačí je všechny vytvořit pouze jednou a nestarat se o to.. takhle při víc hráčích máš přes sebe x ikon.

Link to comment
Share on other sites

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)

Edited by ĐaVe
Link to comment
Share on other sites

Stale nedoporucuji pouzivat. Include je neoltimalizovany a nefunkcni.

na zruseni cyklusu jsem o pul druhe rano opravdu nemel cas ani chut a ted taky ne, include funkcni je, ty p*covinky tam opravim az bude cas a chut

Link to comment
Share on other sites

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 :)

Edited by Polis_Polismanovic
Link to comment
Share on other sites

Mistni [Cenzura] jsi tu akorat tak ty. Si myslis, ze kdyz sem das neotestovany, nefunkcni bullshit include tak se kazdy pos*re?

Include ani zkouset nemusim a vidim, ze nejede, ale chyby uz jsem ti tu jednou vypsal. To by nekdo nesmel byt takovy ignorant a umet cist ^^.

Jed si dal svoje "Script je [Cenzura], obcas to nefunguje ale kdyz to zkousim sam tak to jede.. opravte si to sami". [Cenzura] pristup [Cenzura] cloveka, muzes to opravit behem chvilinky (prakticky to mas opravene ode me) ale skutek utekl a Jezis umrel.

 

 

//EDIT: 

Protože je DaVe věřící, který nekleje, smazal všechny svoje nadávky.. viz  http://img.ewolutions.cz/di/6OWB/daveomg.png

Ámen Dave

Edited by Lukasz
Nahrazení vulgarní slov
  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

  • Globální moderátor

Třeba tohle jak již zmiňoval

 

Plus ti to nebude fungovat, když si stoupne na pickup víc lidí, protože pořád přepisuješ ID toho menu.

 

 

 

Navíc, nikde neničíš vytvořený Menu... zkus si stoupnout 129x a schválně jestli ti nepadne server

Link to comment
Share on other sites

Fajn to stačí...

Nebudem se tu hádat poslední šance nebo lock příspěvek a var pro každého kdo použije vulgarní slovo nebo uraživou větu na jakoukoliv osobu!

Topic se mazat nebude je to includ který pár lidi zřejmě využije.

Pokud se někomu nelíbí tento přístup prosím nevyjadřujte se.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

abych zhodnotil zmého pohledu. máš tam hoodně kravin a to vytváření práce s 20 argumentama je otřesné..raději bych udělal CreateJob(ID,X,Y,Z); AddSkinJob(ID,One.Two,Three); AddSpawnPoint(ID,X,Y,Z); AddWeaponsJob(ID,Gun,Ammo);

 

takle má člověk přehled kde co má a nemusí to hrabat na jednom řádku mezi všema těma číslama kterým ani nemusí potom rozumět..  jednoduše řečeno. máš tam fakt moc kravin i na můj vkus. 

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • Globální moderátor

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. Vše by se mělo hezky dělit do funkcí, kde každá funkce má svůj JEDEN účel. Terpve pak JE to PŘEHLEDNÉ A RYCHLÉ

Nemusíš se ZDRŽOVAT? RYCHLEJI?... kdyby to bylo všechno sjednocené, tak OnPConnect a OnPDisconnect je v jednom... nebo počkej, proč to rovnou všechno nenacpat do OnGameModeInit, že? 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ů... 

 

 

EDIT: 

 

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

 

Tolik nesrovnalostí a protiřečí v jedné větě. Tak když to neděláš pro sebe, ale pro nás, tak prosím... překopej to ať to vypadá k světu.

Edited by HighPrint
Link to comment
Share on other sites

 

 

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...